// Copyright 2016-2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//

#include "url.h"

// Copyright 2017-2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// #include "upa/idna.h"


// Copyright 2017-2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// #include "upa/idna/idna.h"

// #include "upa/idna/idna_table.h"

// #include "upa/idna/nfc.h"

// #include "upa/idna/punycode.h"


#include <algorithm>
#include <iterator>
#include <stdexcept>
#include <string>

namespace upa { // NOLINT(modernize-concat-nested-namespaces)
namespace idna {
namespace {

// Split

template<class InputIt, class T, class FunT>
inline void split(InputIt first, InputIt last, const T& delim, FunT output) {
    auto start = first;
    while (true) {
        auto it = std::find(start, last, delim);
        output(start, it);
        if (it == last) break;
        start = ++it; // skip delimiter
    }
}

// Processing

enum BidiRes : int {
    IsBidiDomain = 0x01,
    IsBidiError = 0x02
};

bool validate_label(const char32_t* label, const char32_t* label_end, Option options, bool full_check, int& bidiRes);
bool validate_bidi(const char32_t* label, const char32_t* label_end, int& bidiRes);

bool processing_mapped(std::u32string* pdecoded, const std::u32string& mapped, Option options) {
    bool error = false;

    // P3 - Break
    int bidiRes = 0;
    bool first_label = true;
    split(mapped.data(), mapped.data() + mapped.length(), 0x002E, [&](const char32_t* label, const char32_t* label_end) {
        if (first_label) {
            first_label = false;
        } else {
            if (pdecoded) pdecoded->push_back('.');
        }
        // P4 - Convert/Validate
        if (label_end - label >= 4 && label[0] == 'x' && label[1] == 'n' && label[2] == '-' && label[3] == '-') {
            if (*(label_end - 1) == '-' && label_end - label != 5) {
                // For compatibility with ICU, report errors on "xn--" or "xn--ascii-" labels.
                // Ignore "xn---", it will fail punycode::decode.
                // More info: https://github.com/whatwg/url/issues/760#issuecomment-1462706617
                error = true;
                // Decode "xn--ascii-" to "ascii" for to_unicode:
                if (pdecoded && label_end - label > 5) {
                    if (std::all_of(label + 4, label_end - 1, [](char32_t ch) { return ch < 0x80; }))
                        pdecoded->append(label + 4, label_end - 1);
                    else
                        pdecoded->append(label, label_end); // contains non-ASCII - leave original label
                }
            } else {
                std::u32string ulabel;
                if (punycode::decode(ulabel, label + 4, label_end) == punycode::status::success) {
                    error = error || !validate_label(ulabel.data(), ulabel.data() + ulabel.length(), options & ~Option::Transitional, true, bidiRes);
                    if (pdecoded) pdecoded->append(ulabel);
                } else {
                    error = true; // punycode decode error
                    if (pdecoded) pdecoded->append(label, label_end);
                }
            }
        } else {
            error = error || !validate_label(label, label_end, options, false, bidiRes);
            if (pdecoded) pdecoded->append(label, label_end);
        }
    });

    return !error;
}

bool validate_label(const char32_t* label, const char32_t* label_end, Option options, bool full_check, int& bidiRes) {
    if (label != label_end) {
        // V1 - The label must be in Unicode Normalization Form NFC
        if (full_check && !is_normalized_nfc(label, label_end))
            return false;

        if (detail::has(options, Option::CheckHyphens)) {
            // V2
            const std::size_t label_length = label_end - label;
            if (label_length >= 4 && label[2] == '-' && label[3] == '-')
                return false;
            // V3
            if (label[0] == '-' || *(label_end - 1) == '-')
                return false;
        } else if (full_check) {
            // V4: If not CheckHyphens, the label must not begin with “xn--”
            // https://github.com/whatwg/url/issues/603#issuecomment-842625331
            const std::size_t label_length = label_end - label;
            if (label_length >= 4 && label[0] == 'x' && label[1] == 'n' && label[2] == '-' && label[3] == '-')
                return false;
        }

        // V5 - can be ignored (todo)

        // V6
        const uint32_t cpflags = util::getCharInfo(label[0]); // label != label_end
        if (cpflags & util::CAT_MARK)
            return false;

        // V7
        // TODO: if (full_check)
        const uint32_t valid_mask = util::getValidMask(
            detail::has(options, Option::UseSTD3ASCIIRules),
            detail::has(options, Option::Transitional));
        for (auto it = label; it != label_end;) {
            const uint32_t cpflags = util::getCharInfo(*it++); // it != label_end
            if ((cpflags & valid_mask) != util::CP_VALID) {
                return false;
            }
        }

        // V8
        if (detail::has(options, Option::CheckJoiners)) {
            // https://tools.ietf.org/html/rfc5892#appendix-A
            for (auto it = label; it != label_end;) {
                auto start = it;
                const uint32_t cp = *it++; // it != label_end
                if (cp == 0x200C) {
                    // ZERO WIDTH NON-JOINER
                    if (start == label)
                        return false;
                    uint32_t cpflags = util::getCharInfo(*(--start)); // label != start
                    if (!(cpflags & util::CAT_Virama)) {
                        // {R,D} is required on the right
                        if (it == label_end)
                            return false;
                        // (Joining_Type:{L,D})(Joining_Type:T)* \u200C
                        while (!(cpflags & (util::CAT_Joiner_L | util::CAT_Joiner_D))) {
                            if (!(cpflags & util::CAT_Joiner_T) || start == label)
                                return false;
                            cpflags = util::getCharInfo(*(--start)); // label != start
                        }
                        // \u200C (Joining_Type:T)*(Joining_Type:{R,D})
                        cpflags = util::getCharInfo(*it++); // it != label_end
                        while (!(cpflags & (util::CAT_Joiner_R | util::CAT_Joiner_D))) {
                            if (!(cpflags & util::CAT_Joiner_T) || it == label_end)
                                return false;
                            cpflags = util::getCharInfo(*it++); // it != label_end
                        }
                        // HACK: because 0x200C is Non_Joining (U); 0x200D is Join_Causing (C), i.e.
                        // not L, D, R, T; then the cycle can be continued with `it` increased here
                    }
                } else if (cp == 0x200D) {
                    //  ZERO WIDTH JOINER
                    if (start == label ||
                        !(util::getCharInfo(*(--start)) & util::CAT_Virama)  // label != start
                        ) {
                        return false;
                    }
                }
            }
        }

        // V9
        if (detail::has(options, Option::CheckBidi)) {
            if (!validate_bidi(label, label_end, bidiRes))
                return false;
        }
    }
    return true;
}

inline bool is_bidi(const char32_t* first, const char32_t* last) {
    // https://tools.ietf.org/html/rfc5893#section-2
    for (auto it = first; it != last;) {
        const uint32_t cpflags = util::getCharInfo(*it++); // it != last
        // A "Bidi domain name" is a domain name that contains at least one RTL
        // label. An RTL label is a label that contains at least one character
        // of type R, AL, or AN.
        if (cpflags & (util::CAT_Bidi_R_AL | util::CAT_Bidi_AN))
            return true;
    }
    return false;
}

bool validate_bidi(const char32_t* label, const char32_t* label_end, int& bidiRes) {
    // To check rules the label must have at least one character
    if (label == label_end)
        return true;

    // if there is a bidi error, then only check domain is bidi
    if (bidiRes & IsBidiError) {
        // error if bidi domain
        return !is_bidi(label, label_end);
    }

    // 1. The first character must be a character with Bidi property L, R, or AL
    uint32_t cpflags = util::getCharInfo(*label++); // label != label_end
    if (cpflags & util::CAT_Bidi_R_AL) {
        // RTL
        uint32_t end_cpflags = cpflags;
        uint32_t all_cpflags = 0;
        for (auto it = label; it != label_end;) {
            cpflags = util::getCharInfo(*it++); // it != label_end
            // 2. R, AL, AN, EN, ES, CS, ET, ON, BN, NSM
            if (!(cpflags & (util::CAT_Bidi_R_AL | util::CAT_Bidi_AN | util::CAT_Bidi_EN |
                util::CAT_Bidi_ES_CS_ET_ON_BN | util::CAT_Bidi_NSM)))
                return false;
            // 3. NSM
            if (!(cpflags & util::CAT_Bidi_NSM))
                end_cpflags = cpflags;
            // 4. EN, AN
            all_cpflags |= cpflags;
        }
        // 3. R, AL, AN, EN
        if (!(end_cpflags & (util::CAT_Bidi_R_AL | util::CAT_Bidi_AN | util::CAT_Bidi_EN)))
            return false;
        // 4. EN, AN
        if ((all_cpflags & (util::CAT_Bidi_AN | util::CAT_Bidi_EN)) == (util::CAT_Bidi_AN | util::CAT_Bidi_EN))
            return false;
        // is bidi domain
        bidiRes |= IsBidiDomain;
    } else if (cpflags & util::CAT_Bidi_L) {
        // LTR
        uint32_t end_cpflags = cpflags;
        for (auto it = label; it != label_end;) {
            cpflags = util::getCharInfo(*it++); // it != label_end
#if 0
            // 5. L, EN, ES, CS, ET, ON, BN, NSM
            if (!(cpflags & (CAT_Bidi_L | CAT_Bidi_EN | CAT_Bidi_ES_CS_ET_ON_BN | CAT_Bidi_NSM))) {
                // error if bidi domain
                if ((bidiRes & IsBidiDomain) || (cpflags & (CAT_Bidi_R_AL | CAT_Bidi_AN)) || is_bidi(it, label_end)) {
                    return false;
                } else {
                    bidiRes |= IsBidiError;
                }
            }
            // 6. NSM
            if (!(cpflags & CAT_Bidi_NSM))
                end_cpflags = cpflags;
#else
            // 5. L, EN, ES, CS, ET, ON, BN, NSM; 6. NSM
            if (cpflags & (util::CAT_Bidi_L | util::CAT_Bidi_EN | util::CAT_Bidi_ES_CS_ET_ON_BN)) {
                end_cpflags = cpflags;
            } else if (!(cpflags & util::CAT_Bidi_NSM)) {
                // error if bidi domain
                if ((bidiRes & IsBidiDomain) || (cpflags & (util::CAT_Bidi_R_AL | util::CAT_Bidi_AN))
                    || is_bidi(it, label_end)) {
                    return false;
                }
                bidiRes |= IsBidiError;
            }
#endif
        }
        // 6. L, EN
        if (!(end_cpflags & (util::CAT_Bidi_L | util::CAT_Bidi_EN))) {
            // error if bidi domain
            if (bidiRes & IsBidiDomain) {
                return false;
            }
            bidiRes |= IsBidiError;
        }
    } else {
        // error if bidi domain
        if ((bidiRes & IsBidiDomain) || (cpflags & (util::CAT_Bidi_R_AL | util::CAT_Bidi_AN))
            || is_bidi(label, label_end)) {
            return false;
        }
        bidiRes |= IsBidiError;
    }
    return true;
}

template <class InputIt>
inline void str_append(std::string& dest, InputIt first, InputIt last) {
#ifdef _MSC_VER
    const std::size_t input_size = std::distance(first, last);
    if (dest.max_size() - dest.size() < input_size)
        throw std::length_error("too big size");
    // now it is safe to add sizes
    dest.reserve(dest.size() + input_size);
    for (auto it = first; it != last; ++it)
        dest.push_back(static_cast<char>(*it));
#else
    dest.append(first, last);
#endif
}

} // namespace

namespace detail {

bool to_ascii_mapped(std::string& domain, const std::u32string& mapped, Option options) {
    // A1
    bool ok = processing_mapped(nullptr, mapped, options);
    if (!ok) return ok;

    // A2 - Break the result into labels at U+002E FULL STOP
    if (mapped.length() == 0) {
        // to simplify root label detection
        if (detail::has(options, Option::VerifyDnsLength))
            ok = false;
    } else {
        const char32_t* first = mapped.data();
        const char32_t* last = mapped.data() + mapped.length();
        std::size_t domain_len = domain.length() + static_cast<std::size_t>(-1);
        bool first_label = true;
        split(first, last, 0x002E, [&](const char32_t* label, const char32_t* label_end) {
            // root is ending empty label
            const bool is_root = (label == last);

            // join
            if (first_label) {
                first_label = false;
            } else {
                domain.push_back('.');
            }

            // A3 - to Punycode
            const std::size_t label_start_ind = domain.length();
            if (std::any_of(label, label_end, [](char32_t ch) { return ch >= 0x80; })) {
                // has non-ASCII
                std::string alabel;
                if (punycode::encode(alabel, label, label_end) == punycode::status::success) {
                    domain.push_back('x');
                    domain.push_back('n');
                    domain.push_back('-');
                    domain.push_back('-');
                    domain.append(alabel);
                } else {
                    // ignore label if it cannot be punycode encoded and record an error
                    ok = false; // punycode error
                }
            } else {
                str_append(domain, label, label_end);
            }

            // A4 - DNS length restrictions
            if (detail::has(options, Option::VerifyDnsLength) && !is_root) {
                const std::size_t label_length = domain.length() - label_start_ind;
                // A4_2
                if (label_length < 1 || label_length > 63)
                    ok = false;
                // A4_1
                domain_len += (1 + label_length); // dot & label
                if (domain_len > 253) // early detect
                    ok = false;
            }
        });

        // A4_1
        if (detail::has(options, Option::VerifyDnsLength) && domain_len == 0)
            ok = false;
    }

    return ok;
}

bool to_unicode_mapped(std::u32string& domain, const std::u32string& mapped, Option options) {
    return processing_mapped(&domain, mapped, options);
}


} // namespace detail
} // namespace idna
} // namespace upa
// Copyright 2017-2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// #include "upa/idna/idna_table.h"


namespace upa { // NOLINT(modernize-concat-nested-namespaces)
namespace idna { // NOLINT(modernize-concat-nested-namespaces)
namespace util {

// BEGIN-GENERATED
const std::uint32_t blockData[] = {
  0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000,
  0x40050000, 0x50000, 0x50000, 0x50000, 0x50000, 0x50000, 0x40050000, 0x40050000, 0x40050000,
  0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000,
  0x40050000, 0x40050000, 0x40050000, 0x50000, 0x50000, 0x50000, 0x50000, 0x50000, 0x40050000,
  0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000,
  0x40050000, 0x40050000, 0x40050000, 0x40010000, 0x40010000, 0x40050000, 0x20010000, 0x20010000,
  0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000,
  0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0xA0061,
  0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C,
  0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077,
  0xA0078, 0xA0079, 0xA007A, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x40050000, 0x40050000, 0x40050000, 0x40050000, 0x40050000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0xE0020, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x6421A, 0x40010000, 0xA0061, 0x40010000, 0x40010000, 0x20000, 0x40010000, 0x64651,
  0x40010000, 0x40010000, 0xA0032, 0xA0033, 0x64653, 0xA03BC, 0x40010000, 0x40010000, 0x64655,
  0xA0031, 0xA006F, 0x40010000, 0x26130, 0x26133, 0x26136, 0x40010000, 0xA00E0, 0xA00E1, 0xA00E2,
  0xA00E3, 0xA00E4, 0xA00E5, 0xA00E6, 0xA00E7, 0xA00E8, 0xA00E9, 0xA00EA, 0xA00EB, 0xA00EC, 0xA00ED,
  0xA00EE, 0xA00EF, 0xA00F0, 0xA00F1, 0xA00F2, 0xA00F3, 0xA00F4, 0xA00F5, 0xA00F6, 0x40010000,
  0xA00F8, 0xA00F9, 0xA00FA, 0xA00FB, 0xA00FC, 0xA00FD, 0xA00FE, 0x4034657, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x40010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA0101, 0x4010000, 0xA0103, 0x4010000, 0xA0105,
  0x4010000, 0xA0107, 0x4010000, 0xA0109, 0x4010000, 0xA010B, 0x4010000, 0xA010D, 0x4010000,
  0xA010F, 0x4010000, 0xA0111, 0x4010000, 0xA0113, 0x4010000, 0xA0115, 0x4010000, 0xA0117,
  0x4010000, 0xA0119, 0x4010000, 0xA011B, 0x4010000, 0xA011D, 0x4010000, 0xA011F, 0x4010000,
  0xA0121, 0x4010000, 0xA0123, 0x4010000, 0xA0125, 0x4010000, 0xA0127, 0x4010000, 0xA0129,
  0x4010000, 0xA012B, 0x4010000, 0xA012D, 0x4010000, 0xA012F, 0x4010000, 0x24659, 0x4010000,
  0x2465B, 0x2465B, 0xA0135, 0x4010000, 0xA0137, 0x4010000, 0x4010000, 0xA013A, 0x4010000, 0xA013C,
  0x4010000, 0xA013E, 0x4010000, 0x2465D, 0x2465D, 0xA0142, 0x4010000, 0xA0144, 0x4010000, 0xA0146,
  0x4010000, 0xA0148, 0x4010000, 0x24667, 0xA014B, 0x4010000, 0xA014D, 0x4010000, 0xA014F,
  0x4010000, 0xA0151, 0x4010000, 0xA0153, 0x4010000, 0xA0155, 0x4010000, 0xA0157, 0x4010000,
  0xA0159, 0x4010000, 0xA015B, 0x4010000, 0xA015D, 0x4010000, 0xA015F, 0x4010000, 0xA0161,
  0x4010000, 0xA0163, 0x4010000, 0xA0165, 0x4010000, 0xA0167, 0x4010000, 0xA0169, 0x4010000,
  0xA016B, 0x4010000, 0xA016D, 0x4010000, 0xA016F, 0x4010000, 0xA0171, 0x4010000, 0xA0173,
  0x4010000, 0xA0175, 0x4010000, 0xA0177, 0x4010000, 0xA00FF, 0xA017A, 0x4010000, 0xA017C,
  0x4010000, 0xA017E, 0x4010000, 0xA0073, 0x4010000, 0xA0253, 0xA0183, 0x4010000, 0xA0185,
  0x4010000, 0xA0254, 0xA0188, 0x4010000, 0xA0256, 0xA0257, 0xA018C, 0x4010000, 0x4010000, 0xA01DD,
  0xA0259, 0xA025B, 0xA0192, 0x4010000, 0xA0260, 0xA0263, 0x4010000, 0xA0269, 0xA0268, 0xA0199,
  0x4010000, 0x4010000, 0x4010000, 0xA026F, 0xA0272, 0x4010000, 0xA0275, 0xA01A1, 0x4010000,
  0xA01A3, 0x4010000, 0xA01A5, 0x4010000, 0xA0280, 0xA01A8, 0x4010000, 0xA0283, 0x4010000,
  0x4010000, 0xA01AD, 0x4010000, 0xA0288, 0xA01B0, 0x4010000, 0xA028A, 0xA028B, 0xA01B4, 0x4010000,
  0xA01B6, 0x4010000, 0xA0292, 0xA01B9, 0x4010000, 0x4010000, 0x4010000, 0xA01BD, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x24787, 0x24787, 0x24787,
  0x24789, 0x24789, 0x24789, 0x2478B, 0x2478B, 0x2478B, 0xA01CE, 0x4010000, 0xA01D0, 0x4010000,
  0xA01D2, 0x4010000, 0xA01D4, 0x4010000, 0xA01D6, 0x4010000, 0xA01D8, 0x4010000, 0xA01DA,
  0x4010000, 0xA01DC, 0x4010000, 0x4010000, 0xA01DF, 0x4010000, 0xA01E1, 0x4010000, 0xA01E3,
  0x4010000, 0xA01E5, 0x4010000, 0xA01E7, 0x4010000, 0xA01E9, 0x4010000, 0xA01EB, 0x4010000,
  0xA01ED, 0x4010000, 0xA01EF, 0x4010000, 0x4010000, 0x24797, 0x24797, 0x24797, 0xA01F5, 0x4010000,
  0xA0195, 0xA01BF, 0xA01F9, 0x4010000, 0xA01FB, 0x4010000, 0xA01FD, 0x4010000, 0xA01FF, 0x4010000,
  0xA0201, 0x4010000, 0xA0203, 0x4010000, 0xA0205, 0x4010000, 0xA0207, 0x4010000, 0xA0209,
  0x4010000, 0xA020B, 0x4010000, 0xA020D, 0x4010000, 0xA020F, 0x4010000, 0xA0211, 0x4010000,
  0xA0213, 0x4010000, 0xA0215, 0x4010000, 0xA0217, 0x4010000, 0xA0219, 0x4010000, 0xA021B,
  0x4010000, 0xA021D, 0x4010000, 0xA021F, 0x4010000, 0xA019E, 0x4010000, 0xA0223, 0x4010000,
  0xA0225, 0x4010000, 0xA0227, 0x4010000, 0xA0229, 0x4010000, 0xA022B, 0x4010000, 0xA022D,
  0x4010000, 0xA022F, 0x4010000, 0xA0231, 0x4010000, 0xA0233, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA2C65, 0xA023C, 0x4010000, 0xA019A, 0xA2C66,
  0x4010000, 0x4010000, 0xA0242, 0x4010000, 0xA0180, 0xA0289, 0xA028C, 0xA0247, 0x4010000, 0xA0249,
  0x4010000, 0xA024B, 0x4010000, 0xA024D, 0x4010000, 0xA024F, 0x4010000, 0xA0068, 0xA0266, 0xA006A,
  0xA0072, 0xA0279, 0xA027B, 0xA0281, 0xA0077, 0xA0079, 0x40010000, 0x40010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x4010000, 0x4010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x647C9, 0x647CB, 0x647CD, 0x647CF, 0x647D1,
  0x647D3, 0x40010000, 0x40010000, 0xA0263, 0xA006C, 0xA0073, 0xA0078, 0xA0295, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0xA0300, 0xA0301, 0x82110000, 0xA0313, 0x2426C, 0xA03B9, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x20000, 0xA0371, 0x4010000, 0xA0373, 0x4010000, 0xA02B9, 0x40010000, 0xA0377, 0x4010000, 0, 0,
  0x647E5, 0x4010000, 0x4010000, 0x4010000, 0xE003B, 0xA03F3, 0, 0, 0, 0, 0x64653, 0x6626B, 0xA03AC,
  0xA00B7, 0xA03AD, 0xA03AE, 0xA03AF, 0, 0xA03CC, 0, 0xA03CD, 0xA03CE, 0x4010000, 0xA03B1, 0xA03B2,
  0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD,
  0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8,
  0xA03C9, 0xA03CA, 0xA03CB, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x40B03C3, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA03D7, 0xA03B2, 0xA03B8, 0xA03C5, 0xA03CD, 0xA03CB,
  0xA03C6, 0xA03C0, 0x4010000, 0xA03D9, 0x4010000, 0xA03DB, 0x4010000, 0xA03DD, 0x4010000, 0xA03DF,
  0x4010000, 0xA03E1, 0x4010000, 0xA03E3, 0x4010000, 0xA03E5, 0x4010000, 0xA03E7, 0x4010000,
  0xA03E9, 0x4010000, 0xA03EB, 0x4010000, 0xA03ED, 0x4010000, 0xA03EF, 0x4010000, 0xA03BA, 0xA03C1,
  0xA03C3, 0x4010000, 0xA03B8, 0xA03B5, 0x40010000, 0xA03F8, 0x4010000, 0xA03C3, 0xA03FB, 0x4010000,
  0x4010000, 0xA037B, 0xA037C, 0xA037D, 0xA0450, 0xA0451, 0xA0452, 0xA0453, 0xA0454, 0xA0455,
  0xA0456, 0xA0457, 0xA0458, 0xA0459, 0xA045A, 0xA045B, 0xA045C, 0xA045D, 0xA045E, 0xA045F, 0xA0430,
  0xA0431, 0xA0432, 0xA0433, 0xA0434, 0xA0435, 0xA0436, 0xA0437, 0xA0438, 0xA0439, 0xA043A, 0xA043B,
  0xA043C, 0xA043D, 0xA043E, 0xA043F, 0xA0440, 0xA0441, 0xA0442, 0xA0443, 0xA0444, 0xA0445, 0xA0446,
  0xA0447, 0xA0448, 0xA0449, 0xA044A, 0xA044B, 0xA044C, 0xA044D, 0xA044E, 0xA044F, 0xA0461,
  0x4010000, 0xA0463, 0x4010000, 0xA0465, 0x4010000, 0xA0467, 0x4010000, 0xA0469, 0x4010000,
  0xA046B, 0x4010000, 0xA046D, 0x4010000, 0xA046F, 0x4010000, 0xA0471, 0x4010000, 0xA0473,
  0x4010000, 0xA0475, 0x4010000, 0xA0477, 0x4010000, 0xA0479, 0x4010000, 0xA047B, 0x4010000,
  0xA047D, 0x4010000, 0xA047F, 0x4010000, 0xA0481, 0x4010000, 0x4010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0xA048B, 0x4010000, 0xA048D,
  0x4010000, 0xA048F, 0x4010000, 0xA0491, 0x4010000, 0xA0493, 0x4010000, 0xA0495, 0x4010000,
  0xA0497, 0x4010000, 0xA0499, 0x4010000, 0xA049B, 0x4010000, 0xA049D, 0x4010000, 0xA049F,
  0x4010000, 0xA04A1, 0x4010000, 0xA04A3, 0x4010000, 0xA04A5, 0x4010000, 0xA04A7, 0x4010000,
  0xA04A9, 0x4010000, 0xA04AB, 0x4010000, 0xA04AD, 0x4010000, 0xA04AF, 0x4010000, 0xA04B1,
  0x4010000, 0xA04B3, 0x4010000, 0xA04B5, 0x4010000, 0xA04B7, 0x4010000, 0xA04B9, 0x4010000,
  0xA04BB, 0x4010000, 0xA04BD, 0x4010000, 0xA04BF, 0x4010000, 0, 0xA04C2, 0x4010000, 0xA04C4,
  0x4010000, 0xA04C6, 0x4010000, 0xA04C8, 0x4010000, 0xA04CA, 0x4010000, 0xA04CC, 0x4010000,
  0xA04CE, 0x4010000, 0x4010000, 0xA04D1, 0x4010000, 0xA04D3, 0x4010000, 0xA04D5, 0x4010000,
  0xA04D7, 0x4010000, 0xA04D9, 0x4010000, 0xA04DB, 0x4010000, 0xA04DD, 0x4010000, 0xA04DF,
  0x4010000, 0xA04E1, 0x4010000, 0xA04E3, 0x4010000, 0xA04E5, 0x4010000, 0xA04E7, 0x4010000,
  0xA04E9, 0x4010000, 0xA04EB, 0x4010000, 0xA04ED, 0x4010000, 0xA04EF, 0x4010000, 0xA04F1,
  0x4010000, 0xA04F3, 0x4010000, 0xA04F5, 0x4010000, 0xA04F7, 0x4010000, 0xA04F9, 0x4010000,
  0xA04FB, 0x4010000, 0xA04FD, 0x4010000, 0xA04FF, 0x4010000, 0xA0501, 0x4010000, 0xA0503,
  0x4010000, 0xA0505, 0x4010000, 0xA0507, 0x4010000, 0xA0509, 0x4010000, 0xA050B, 0x4010000,
  0xA050D, 0x4010000, 0xA050F, 0x4010000, 0xA0511, 0x4010000, 0xA0513, 0x4010000, 0xA0515,
  0x4010000, 0xA0517, 0x4010000, 0xA0519, 0x4010000, 0xA051B, 0x4010000, 0xA051D, 0x4010000,
  0xA051F, 0x4010000, 0xA0521, 0x4010000, 0xA0523, 0x4010000, 0xA0525, 0x4010000, 0xA0527,
  0x4010000, 0xA0529, 0x4010000, 0xA052B, 0x4010000, 0xA052D, 0x4010000, 0xA052F, 0x4010000, 0,
  0xA0561, 0xA0562, 0xA0563, 0xA0564, 0xA0565, 0xA0566, 0xA0567, 0xA0568, 0xA0569, 0xA056A, 0xA056B,
  0xA056C, 0xA056D, 0xA056E, 0xA056F, 0xA0570, 0xA0571, 0xA0572, 0xA0573, 0xA0574, 0xA0575, 0xA0576,
  0xA0577, 0xA0578, 0xA0579, 0xA057A, 0xA057B, 0xA057C, 0xA057D, 0xA057E, 0xA057F, 0xA0580, 0xA0581,
  0xA0582, 0xA0583, 0xA0584, 0xA0585, 0xA0586, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x245DD, 0x4010000, 0x4010000, 0x40010000, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x82110000, 0x8010000,
  0x82110000, 0x82110000, 0x8010000, 0x82110000, 0x82110000, 0x8010000, 0x82110000, 0, 0, 0, 0, 0,
  0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0, 0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x8010000, 0x40010000,
  0x40010000, 0x8010000, 0x40010000, 0x8010000, 0x40010000, 0x40010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x8010000, 0, 0x8010000, 0x8010000, 0x8010000, 0x8410000, 0x8010000, 0x9010000,
  0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x9010000, 0x8410000, 0x9010000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x9010000, 0x8410000, 0x8410000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000,
  0x10010000, 0x10010000, 0x10010000, 0x40010000, 0x10010000, 0x10010000, 0x8010000, 0x8410000,
  0x8410000, 0x82110000, 0x9010000, 0x9010000, 0x9010000, 0x8010000, 0x245DF, 0x245E1, 0x245E3,
  0x245E5, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x9010000,
  0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000,
  0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x9010000, 0x9010000,
  0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x9010000, 0x8410000, 0x9010000,
  0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x8010000, 0x9010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x40010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x8010000, 0x82110000, 0x82110000,
  0x40010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x9010000, 0x9010000, 0x20010000,
  0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000,
  0x20010000, 0x8410000, 0x8410000, 0x8410000, 0x8010000, 0x8010000, 0x8410000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0x9010000, 0x82110000, 0x8410000, 0x8410000,
  0x8410000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x9010000, 0x8410000, 0x9010000, 0x8410000, 0x8410000,
  0x9010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0x9010000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000,
  0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000,
  0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x9010000, 0x9010000,
  0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x8010000, 0x8010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x8010000, 0, 0,
  0x82110000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8010000,
  0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0,
  0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x8410000,
  0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x9010000, 0x9010000, 0x9010000, 0x82110000,
  0x82110000, 0x82110000, 0, 0, 0x8010000, 0, 0x8410000, 0x8010000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8010000, 0x9010000, 0x8410000, 0x9010000, 0x9010000, 0, 0, 0, 0, 0, 0x9010000,
  0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000,
  0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000,
  0x8010000, 0x8010000, 0x8010000, 0x8410000, 0x8010000, 0x8010000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x9010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x9010000,
  0x9010000, 0x8010000, 0x9010000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x4110000, 0x82110000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x82310000, 0x4110000, 0x4110000, 0x4010000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x245E7, 0x245E9, 0x245EB,
  0x245ED, 0x245EF, 0x245F1, 0x245F3, 0x245F5, 0x4010000, 0x4010000, 0x82110000, 0x82110000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4110000, 0x4110000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000,
  0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0, 0x82110000, 0x4010000, 0x4110000, 0x4110000, 0x4110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0x4110000, 0x4110000, 0, 0, 0x4110000,
  0x4110000, 0x82310000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0x4110000, 0, 0, 0, 0, 0x245F7, 0x245F9,
  0, 0x245FB, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x40010000, 0x40010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x40010000, 0x4010000, 0x4010000, 0x82110000, 0, 0, 0x82110000, 0x82110000, 0x4110000,
  0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0x4010000,
  0x4010000, 0, 0x4010000, 0x245FD, 0, 0x4010000, 0x245FF, 0, 0x4010000, 0x4010000, 0, 0,
  0x82110000, 0, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0x82110000,
  0x82110000, 0, 0, 0x82110000, 0x82110000, 0x82310000, 0, 0, 0, 0x82110000, 0, 0, 0, 0, 0, 0, 0,
  0x24601, 0x24603, 0x24605, 0x4010000, 0, 0x24607, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x82110000, 0x82110000, 0x4110000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x82110000, 0x4010000, 0x4110000, 0x4110000,
  0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000,
  0x4110000, 0, 0x4110000, 0x4110000, 0x82310000, 0, 0, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x4010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x4110000, 0x4110000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000,
  0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0, 0x82110000, 0x4010000, 0x4110000, 0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0, 0, 0x4110000, 0x4110000, 0, 0, 0x4110000, 0x4110000, 0x82310000, 0, 0, 0, 0, 0, 0,
  0, 0x82110000, 0x82110000, 0x4110000, 0, 0, 0, 0, 0x24609, 0x2460B, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0x82110000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0, 0,
  0x4010000, 0x4010000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0, 0, 0x4110000, 0x4110000, 0x82110000, 0x4110000, 0x4110000, 0, 0, 0, 0x4110000,
  0x4110000, 0x4110000, 0, 0x4110000, 0x4110000, 0x4110000, 0x82310000, 0, 0, 0x4010000, 0, 0, 0, 0,
  0, 0, 0x4110000, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0x82110000,
  0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x82110000, 0x4010000, 0x82110000,
  0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0, 0x82110000, 0x82110000,
  0x82110000, 0, 0x82110000, 0x82110000, 0x82110000, 0x82310000, 0, 0, 0, 0, 0, 0, 0, 0x82110000,
  0x82110000, 0, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x4010000, 0x4010000, 0x82110000, 0x4110000, 0x4110000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0x82110000, 0x4010000, 0x4110000, 0x6110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0, 0x6110000, 0x4110000, 0x4110000, 0, 0x4110000, 0x4110000, 0x82110000,
  0x82310000, 0, 0, 0, 0, 0, 0, 0, 0x4110000, 0x4110000, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0,
  0, 0x4010000, 0x4010000, 0x4110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000,
  0x4110000, 0x4110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82310000,
  0x82310000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0, 0x4110000, 0x4110000, 0x4110000, 0, 0x4110000, 0x4110000, 0x4110000, 0x82310000,
  0x4010000, 0x4010000, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x82110000,
  0x4110000, 0x4110000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0x82310000, 0, 0, 0, 0, 0x4110000, 0x4110000,
  0x4110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0, 0, 0x4110000, 0x4110000, 0x4010000, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x82110000, 0x4010000, 0x2460D, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82310000, 0, 0, 0, 0, 0x40010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x2460F, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82310000, 0x82110000, 0x82110000,
  0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0, 0, 0x24611, 0x24613, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA0F0B,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x4010000, 0x82110000, 0x4010000, 0x82110000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x4110000, 0x4110000, 0x4010000, 0x4010000, 0x4010000, 0x24615, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x24617, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x24619, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x2461B, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x2461D, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x2461F, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x24621, 0x82110000, 0x24623, 0x24625,
  0x262AA, 0x24627, 0x262B9, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000,
  0x82110000, 0x242AB, 0x82110000, 0x82110000, 0x82310000, 0x4010000, 0x82110000, 0x82110000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x24629, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x2462B, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x2462D, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x2462F, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x24631, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x24633, 0x82110000, 0x82110000, 0x82110000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x4110000, 0x82310000, 0x82310000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000,
  0x82110000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x4010000, 0x4010000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x4010000, 0x4110000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000,
  0x4110000, 0x4110000, 0x82110000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0xA2D27, 0, 0, 0, 0,
  0, 0xA2D2D, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA10DC, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0,
  0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0xA13F0, 0xA13F1, 0xA13F2, 0xA13F3, 0xA13F4, 0xA13F5, 0, 0,
  0x40010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x40010000, 0x40010000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x82110000,
  0x82110000, 0x82310000, 0x4310000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0x4310000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000,
  0x4010000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0, 0x82110000, 0x82110000, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x4110000,
  0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82310000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x40010000, 0x4010000, 0x82110000, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0x40410000,
  0x40010000, 0x40010000, 0x40010000, 0x20000, 0x20000, 0x20000, 0, 0x20000, 0x4410000, 0x4410000,
  0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000,
  0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000,
  0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x4410000, 0x4410000, 0x4410000,
  0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000,
  0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x4410000, 0x82110000, 0x4410000, 0, 0, 0,
  0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0x4110000, 0x4110000, 0x4110000, 0, 0, 0, 0, 0x4110000, 0x4110000, 0x82110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000,
  0x82110000, 0, 0, 0, 0, 0x40010000, 0, 0, 0, 0x40010000, 0x40010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0x40010000, 0x40010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x82110000, 0x4110000, 0x4110000, 0x82110000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x82110000, 0x4110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82310000, 0x4110000, 0x82110000,
  0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x82110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x4110000, 0x4310000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x82110000, 0x82110000, 0x4110000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x4310000, 0x82310000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000,
  0x4110000, 0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x4310000, 0x4310000, 0, 0,
  0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x4110000, 0x4110000, 0x82110000, 0x82110000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0xA0432, 0xA0434, 0xA043E,
  0xA0441, 0xA0442, 0xA0442, 0xA044A, 0xA0463, 0xAA64B, 0, 0, 0, 0, 0, 0, 0, 0xA10D0, 0xA10D1,
  0xA10D2, 0xA10D3, 0xA10D4, 0xA10D5, 0xA10D6, 0xA10D7, 0xA10D8, 0xA10D9, 0xA10DA, 0xA10DB, 0xA10DC,
  0xA10DD, 0xA10DE, 0xA10DF, 0xA10E0, 0xA10E1, 0xA10E2, 0xA10E3, 0xA10E4, 0xA10E5, 0xA10E6, 0xA10E7,
  0xA10E8, 0xA10E9, 0xA10EA, 0xA10EB, 0xA10EC, 0xA10ED, 0xA10EE, 0xA10EF, 0xA10F0, 0xA10F1, 0xA10F2,
  0xA10F3, 0xA10F4, 0xA10F5, 0xA10F6, 0xA10F7, 0xA10F8, 0xA10F9, 0xA10FA, 0, 0, 0xA10FD, 0xA10FE,
  0xA10FF, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000,
  0x4110000, 0x82110000, 0x82110000, 0x4010000, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0xA0061, 0xA00E6, 0xA0062, 0x4010000, 0xA0064, 0xA0065, 0xA01DD, 0xA0067, 0xA0068, 0xA0069,
  0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0x4010000, 0xA006F, 0xA0223, 0xA0070, 0xA0072,
  0xA0074, 0xA0075, 0xA0077, 0xA0061, 0xA0250, 0xA0251, 0xA1D02, 0xA0062, 0xA0064, 0xA0065, 0xA0259,
  0xA025B, 0xA025C, 0xA0067, 0x4010000, 0xA006B, 0xA006D, 0xA014B, 0xA006F, 0xA0254, 0xA1D16,
  0xA1D17, 0xA0070, 0xA0074, 0xA0075, 0xA1D1D, 0xA026F, 0xA0076, 0xA1D25, 0xA03B2, 0xA03B3, 0xA03B4,
  0xA03C6, 0xA03C7, 0xA0069, 0xA0072, 0xA0075, 0xA0076, 0xA03B2, 0xA03B3, 0xA03C1, 0xA03C6, 0xA03C7,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA043D, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA0252, 0xA0063, 0xA0255, 0xA00F0,
  0xA025C, 0xA0066, 0xA025F, 0xA0261, 0xA0265, 0xA0268, 0xA0269, 0xA026A, 0xA1D7B, 0xA029D, 0xA026D,
  0xA1D85, 0xA029F, 0xA0271, 0xA0270, 0xA0272, 0xA0273, 0xA0274, 0xA0275, 0xA0278, 0xA0282, 0xA0283,
  0xA01AB, 0xA0289, 0xA028A, 0xA1D1C, 0xA028B, 0xA028C, 0xA007A, 0xA0290, 0xA0291, 0xA0292, 0xA03B8,
  0xA1E01, 0x4010000, 0xA1E03, 0x4010000, 0xA1E05, 0x4010000, 0xA1E07, 0x4010000, 0xA1E09,
  0x4010000, 0xA1E0B, 0x4010000, 0xA1E0D, 0x4010000, 0xA1E0F, 0x4010000, 0xA1E11, 0x4010000,
  0xA1E13, 0x4010000, 0xA1E15, 0x4010000, 0xA1E17, 0x4010000, 0xA1E19, 0x4010000, 0xA1E1B,
  0x4010000, 0xA1E1D, 0x4010000, 0xA1E1F, 0x4010000, 0xA1E21, 0x4010000, 0xA1E23, 0x4010000,
  0xA1E25, 0x4010000, 0xA1E27, 0x4010000, 0xA1E29, 0x4010000, 0xA1E2B, 0x4010000, 0xA1E2D,
  0x4010000, 0xA1E2F, 0x4010000, 0xA1E31, 0x4010000, 0xA1E33, 0x4010000, 0xA1E35, 0x4010000,
  0xA1E37, 0x4010000, 0xA1E39, 0x4010000, 0xA1E3B, 0x4010000, 0xA1E3D, 0x4010000, 0xA1E3F,
  0x4010000, 0xA1E41, 0x4010000, 0xA1E43, 0x4010000, 0xA1E45, 0x4010000, 0xA1E47, 0x4010000,
  0xA1E49, 0x4010000, 0xA1E4B, 0x4010000, 0xA1E4D, 0x4010000, 0xA1E4F, 0x4010000, 0xA1E51,
  0x4010000, 0xA1E53, 0x4010000, 0xA1E55, 0x4010000, 0xA1E57, 0x4010000, 0xA1E59, 0x4010000,
  0xA1E5B, 0x4010000, 0xA1E5D, 0x4010000, 0xA1E5F, 0x4010000, 0xA1E61, 0x4010000, 0xA1E63,
  0x4010000, 0xA1E65, 0x4010000, 0xA1E67, 0x4010000, 0xA1E69, 0x4010000, 0xA1E6B, 0x4010000,
  0xA1E6D, 0x4010000, 0xA1E6F, 0x4010000, 0xA1E71, 0x4010000, 0xA1E73, 0x4010000, 0xA1E75,
  0x4010000, 0xA1E77, 0x4010000, 0xA1E79, 0x4010000, 0xA1E7B, 0x4010000, 0xA1E7D, 0x4010000,
  0xA1E7F, 0x4010000, 0xA1E81, 0x4010000, 0xA1E83, 0x4010000, 0xA1E85, 0x4010000, 0xA1E87,
  0x4010000, 0xA1E89, 0x4010000, 0xA1E8B, 0x4010000, 0xA1E8D, 0x4010000, 0xA1E8F, 0x4010000,
  0xA1E91, 0x4010000, 0xA1E93, 0x4010000, 0xA1E95, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x246EB, 0xA1E61, 0x4010000, 0x4010000, 0xA00DF, 0x4010000, 0xA1EA1, 0x4010000,
  0xA1EA3, 0x4010000, 0xA1EA5, 0x4010000, 0xA1EA7, 0x4010000, 0xA1EA9, 0x4010000, 0xA1EAB,
  0x4010000, 0xA1EAD, 0x4010000, 0xA1EAF, 0x4010000, 0xA1EB1, 0x4010000, 0xA1EB3, 0x4010000,
  0xA1EB5, 0x4010000, 0xA1EB7, 0x4010000, 0xA1EB9, 0x4010000, 0xA1EBB, 0x4010000, 0xA1EBD,
  0x4010000, 0xA1EBF, 0x4010000, 0xA1EC1, 0x4010000, 0xA1EC3, 0x4010000, 0xA1EC5, 0x4010000,
  0xA1EC7, 0x4010000, 0xA1EC9, 0x4010000, 0xA1ECB, 0x4010000, 0xA1ECD, 0x4010000, 0xA1ECF,
  0x4010000, 0xA1ED1, 0x4010000, 0xA1ED3, 0x4010000, 0xA1ED5, 0x4010000, 0xA1ED7, 0x4010000,
  0xA1ED9, 0x4010000, 0xA1EDB, 0x4010000, 0xA1EDD, 0x4010000, 0xA1EDF, 0x4010000, 0xA1EE1,
  0x4010000, 0xA1EE3, 0x4010000, 0xA1EE5, 0x4010000, 0xA1EE7, 0x4010000, 0xA1EE9, 0x4010000,
  0xA1EEB, 0x4010000, 0xA1EED, 0x4010000, 0xA1EEF, 0x4010000, 0xA1EF1, 0x4010000, 0xA1EF3,
  0x4010000, 0xA1EF5, 0x4010000, 0xA1EF7, 0x4010000, 0xA1EF9, 0x4010000, 0xA1EFB, 0x4010000,
  0xA1EFD, 0x4010000, 0xA1EFF, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0xA1F00, 0xA1F01, 0xA1F02, 0xA1F03, 0xA1F04, 0xA1F05, 0xA1F06,
  0xA1F07, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0xA1F10, 0xA1F11,
  0xA1F12, 0xA1F13, 0xA1F14, 0xA1F15, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0xA1F20, 0xA1F21, 0xA1F22, 0xA1F23, 0xA1F24, 0xA1F25, 0xA1F26,
  0xA1F27, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0xA1F30, 0xA1F31, 0xA1F32, 0xA1F33, 0xA1F34, 0xA1F35, 0xA1F36, 0xA1F37, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0xA1F40, 0xA1F41, 0xA1F42, 0xA1F43, 0xA1F44,
  0xA1F45, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0xA1F51, 0, 0xA1F53, 0, 0xA1F55, 0, 0xA1F57, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA1F60, 0xA1F61, 0xA1F62, 0xA1F63,
  0xA1F64, 0xA1F65, 0xA1F66, 0xA1F67, 0x4010000, 0xA03AC, 0x4010000, 0xA03AD, 0x4010000, 0xA03AE,
  0x4010000, 0xA03AF, 0x4010000, 0xA03CC, 0x4010000, 0xA03CD, 0x4010000, 0xA03CE, 0, 0, 0x247B9,
  0x247BB, 0x247BD, 0x247BF, 0x247C1, 0x247C3, 0x247C5, 0x247C7, 0x247B9, 0x247BB, 0x247BD, 0x247BF,
  0x247C1, 0x247C3, 0x247C5, 0x247C7, 0x247D5, 0x247D7, 0x247D9, 0x247DB, 0x247DD, 0x247DF, 0x247E1,
  0x247E3, 0x247D5, 0x247D7, 0x247D9, 0x247DB, 0x247DD, 0x247DF, 0x247E1, 0x247E3, 0x247E7, 0x247E9,
  0x247EB, 0x247ED, 0x247EF, 0x247F1, 0x247F3, 0x247F5, 0x247E7, 0x247E9, 0x247EB, 0x247ED, 0x247EF,
  0x247F1, 0x247F3, 0x247F5, 0x4010000, 0x4010000, 0x24809, 0x2480B, 0x2480D, 0, 0x4010000, 0x2480F,
  0xA1FB0, 0xA1FB1, 0xA1F70, 0xA03AC, 0x2480B, 0x64235, 0xA03B9, 0x64235, 0x6482F, 0x6621A, 0x24831,
  0x24833, 0x24835, 0, 0x4010000, 0x24837, 0xA1F72, 0xA03AD, 0xA1F74, 0xA03AE, 0x24833, 0x66235,
  0x66238, 0x6623B, 0x4010000, 0x4010000, 0x4010000, 0xA0390, 0, 0, 0x4010000, 0x4010000, 0xA1FD0,
  0xA1FD1, 0xA1F76, 0xA03AF, 0, 0x6624D, 0x66250, 0x66253, 0x4010000, 0x4010000, 0x4010000, 0xA03B0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA1FE0, 0xA1FE1, 0xA1F7A, 0xA03CD, 0xA1FE5, 0x66268,
  0x6626B, 0xE0060, 0, 0, 0x2484F, 0x24851, 0x24859, 0, 0x4010000, 0x24869, 0xA1F78, 0xA03CC,
  0xA1F7C, 0xA03CE, 0x24851, 0x64653, 0x6424D, 0, 0xE0020, 0xE0020, 0xE0020, 0xE0020, 0xE0020,
  0xE0020, 0xE0020, 0xE0020, 0xE0020, 0xE0020, 0xE0020, 0x20000, 0x40030000, 0x40030000, 0, 0,
  0x40010000, 0xA2010, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x64583,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0xE0020,
  0x40010000, 0x40010000, 0x40010000, 0x24088, 0x26088, 0x40010000, 0x242B0, 0x262B0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x64587, 0x40010000, 0x64589, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x6458B, 0x6458D, 0x6458F,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x28088, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0xE0020, 0x20000, 0, 0, 0, 0x20000, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA0030, 0xA0069, 0, 0, 0xA0034, 0xA0035, 0xA0036, 0xA0037, 0xA0038,
  0xA0039, 0xE002B, 0xA2212, 0xE003D, 0xE0028, 0xE0029, 0xA006E, 0xA0030, 0xA0031, 0xA0032, 0xA0033,
  0xA0034, 0xA0035, 0xA0036, 0xA0037, 0xA0038, 0xA0039, 0xE002B, 0xA2212, 0xE003D, 0xE0028, 0xE0029,
  0, 0xA0061, 0xA0065, 0xA006F, 0xA0078, 0xA0259, 0xA0068, 0xA006B, 0xA006C, 0xA006D, 0xA006E,
  0xA0070, 0xA0073, 0xA0074, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x245B9, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x66349, 0x6634C, 0xA0063, 0x245BB,
  0x40010000, 0x66355, 0x66358, 0xA025B, 0x40010000, 0x245BD, 0xA0067, 0xA0068, 0xA0068, 0xA0068,
  0xA0068, 0xA0127, 0xA0069, 0xA0069, 0xA006C, 0xA006C, 0x40010000, 0xA006E, 0x245BF, 0x40010000,
  0x40010000, 0xA0070, 0xA0071, 0xA0072, 0xA0072, 0xA0072, 0x40010000, 0x40010000, 0x245C5, 0x2635B,
  0x245C7, 0x40010000, 0xA007A, 0x40010000, 0xA03C9, 0x40010000, 0xA007A, 0x40010000, 0xA006B,
  0xA00E5, 0xA0062, 0xA0063, 0x40010000, 0xA0065, 0xA0065, 0xA0066, 0, 0xA006D, 0xA006F, 0xA05D0,
  0xA05D1, 0xA05D2, 0xA05D3, 0xA0069, 0x40010000, 0x2618D, 0xA03C0, 0xA03B3, 0xA03B3, 0xA03C0,
  0xA2211, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0xA0064, 0xA0064, 0xA0065, 0xA0069,
  0xA006A, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x4010000, 0x4010000, 0x26223, 0x26226,
  0x2806C, 0x26232, 0x26241, 0x26247, 0x2624A, 0x26256, 0x26259, 0x2625C, 0x2625F, 0x26262, 0x26265,
  0x2626E, 0x26271, 0x2406C, 0xA0069, 0x24075, 0x26075, 0x245D7, 0xA0076, 0x24074, 0x26074, 0x28074,
  0x245DB, 0xA0078, 0x24289, 0x26289, 0xA006C, 0xA0063, 0xA0064, 0xA006D, 0x4010000, 0x4010000,
  0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x262BC, 0x40010000,
  0x40010000, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x24104, 0x26104,
  0x40010000, 0x242BF, 0x262BF, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0xA3008, 0xA3009, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x4010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0xA0031, 0xA0032, 0xA0033, 0xA0034,
  0xA0035, 0xA0036, 0xA0037, 0xA0038, 0xA0039, 0x2406E, 0x24081, 0x240C1, 0x240C9, 0x24119, 0x24091,
  0x240A9, 0x240B1, 0x240BD, 0x240AD, 0x240B9, 0x6652F, 0x66127, 0x6621D, 0x66220, 0x66274, 0x66277,
  0x6627A, 0x6627D, 0x66283, 0x68078, 0x68080, 0x680C0, 0x680C8, 0x68118, 0x68090, 0x680A8, 0x680B0,
  0x680BC, 0x680AC, 0x680B8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x66307,
  0x66313, 0x66337, 0x66346, 0x66352, 0x6635E, 0x6637F, 0x66340, 0x66343, 0x6634F, 0x66361, 0x66379,
  0x6637C, 0x66526, 0x66217, 0x66385, 0x66388, 0x6638B, 0x6638E, 0x66391, 0x66394, 0x66397, 0x6639A,
  0x6639D, 0x663A0, 0x663A3, 0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068,
  0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073,
  0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0xA0063, 0xA0064,
  0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F,
  0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A,
  0xA0030, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x28104, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x663E8, 0x643EA, 0x663EB, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x2463B, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0xA2C30, 0xA2C31, 0xA2C32, 0xA2C33, 0xA2C34, 0xA2C35, 0xA2C36,
  0xA2C37, 0xA2C38, 0xA2C39, 0xA2C3A, 0xA2C3B, 0xA2C3C, 0xA2C3D, 0xA2C3E, 0xA2C3F, 0xA2C40, 0xA2C41,
  0xA2C42, 0xA2C43, 0xA2C44, 0xA2C45, 0xA2C46, 0xA2C47, 0xA2C48, 0xA2C49, 0xA2C4A, 0xA2C4B, 0xA2C4C,
  0xA2C4D, 0xA2C4E, 0xA2C4F, 0xA2C50, 0xA2C51, 0xA2C52, 0xA2C53, 0xA2C54, 0xA2C55, 0xA2C56, 0xA2C57,
  0xA2C58, 0xA2C59, 0xA2C5A, 0xA2C5B, 0xA2C5C, 0xA2C5D, 0xA2C5E, 0xA2C5F, 0xA2C61, 0x4010000,
  0xA026B, 0xA1D7D, 0xA027D, 0x4010000, 0x4010000, 0xA2C68, 0x4010000, 0xA2C6A, 0x4010000, 0xA2C6C,
  0x4010000, 0xA0251, 0xA0271, 0xA0250, 0xA0252, 0x4010000, 0xA2C73, 0x4010000, 0x4010000, 0xA2C76,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA006A, 0xA0076, 0xA023F,
  0xA0240, 0xA2C81, 0x4010000, 0xA2C83, 0x4010000, 0xA2C85, 0x4010000, 0xA2C87, 0x4010000, 0xA2C89,
  0x4010000, 0xA2C8B, 0x4010000, 0xA2C8D, 0x4010000, 0xA2C8F, 0x4010000, 0xA2C91, 0x4010000,
  0xA2C93, 0x4010000, 0xA2C95, 0x4010000, 0xA2C97, 0x4010000, 0xA2C99, 0x4010000, 0xA2C9B,
  0x4010000, 0xA2C9D, 0x4010000, 0xA2C9F, 0x4010000, 0xA2CA1, 0x4010000, 0xA2CA3, 0x4010000,
  0xA2CA5, 0x4010000, 0xA2CA7, 0x4010000, 0xA2CA9, 0x4010000, 0xA2CAB, 0x4010000, 0xA2CAD,
  0x4010000, 0xA2CAF, 0x4010000, 0xA2CB1, 0x4010000, 0xA2CB3, 0x4010000, 0xA2CB5, 0x4010000,
  0xA2CB7, 0x4010000, 0xA2CB9, 0x4010000, 0xA2CBB, 0x4010000, 0xA2CBD, 0x4010000, 0xA2CBF,
  0x4010000, 0xA2CC1, 0x4010000, 0xA2CC3, 0x4010000, 0xA2CC5, 0x4010000, 0xA2CC7, 0x4010000,
  0xA2CC9, 0x4010000, 0xA2CCB, 0x4010000, 0xA2CCD, 0x4010000, 0xA2CCF, 0x4010000, 0xA2CD1,
  0x4010000, 0xA2CD3, 0x4010000, 0xA2CD5, 0x4010000, 0xA2CD7, 0x4010000, 0xA2CD9, 0x4010000,
  0xA2CDB, 0x4010000, 0xA2CDD, 0x4010000, 0xA2CDF, 0x4010000, 0xA2CE1, 0x4010000, 0xA2CE3,
  0x4010000, 0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0xA2CEC, 0x4010000, 0xA2CEE, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0xA2CF3, 0x4010000, 0,
  0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0, 0, 0, 0,
  0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0, 0, 0, 0, 0, 0xA2D61, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x82310000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0xA6BCD, 0x40010000, 0x40010000, 0x40010000,
  0xA9F9F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA4E00, 0xA4E28, 0xA4E36, 0xA4E3F, 0xA4E59, 0xA4E85,
  0xA4E8C, 0xA4EA0, 0xA4EBA, 0xA513F, 0xA5165, 0xA516B, 0xA5182, 0xA5196, 0xA51AB, 0xA51E0, 0xA51F5,
  0xA5200, 0xA529B, 0xA52F9, 0xA5315, 0xA531A, 0xA5338, 0xA5341, 0xA535C, 0xA5369, 0xA5382, 0xA53B6,
  0xA53C8, 0xA53E3, 0xA56D7, 0xA571F, 0xA58EB, 0xA5902, 0xA590A, 0xA5915, 0xA5927, 0xA5973, 0xA5B50,
  0xA5B80, 0xA5BF8, 0xA5C0F, 0xA5C22, 0xA5C38, 0xA5C6E, 0xA5C71, 0xA5DDB, 0xA5DE5, 0xA5DF1, 0xA5DFE,
  0xA5E72, 0xA5E7A, 0xA5E7F, 0xA5EF4, 0xA5EFE, 0xA5F0B, 0xA5F13, 0xA5F50, 0xA5F61, 0xA5F73, 0xA5FC3,
  0xA6208, 0xA6236, 0xA624B, 0xA652F, 0xA6534, 0xA6587, 0xA6597, 0xA65A4, 0xA65B9, 0xA65E0, 0xA65E5,
  0xA66F0, 0xA6708, 0xA6728, 0xA6B20, 0xA6B62, 0xA6B79, 0xA6BB3, 0xA6BCB, 0xA6BD4, 0xA6BDB, 0xA6C0F,
  0xA6C14, 0xA6C34, 0xA706B, 0xA722A, 0xA7236, 0xA723B, 0xA723F, 0xA7247, 0xA7259, 0xA725B, 0xA72AC,
  0xA7384, 0xA7389, 0xA74DC, 0xA74E6, 0xA7518, 0xA751F, 0xA7528, 0xA7530, 0xA758B, 0xA7592, 0xA7676,
  0xA767D, 0xA76AE, 0xA76BF, 0xA76EE, 0xA77DB, 0xA77E2, 0xA77F3, 0xA793A, 0xA79B8, 0xA79BE, 0xA7A74,
  0xA7ACB, 0xA7AF9, 0xA7C73, 0xA7CF8, 0xA7F36, 0xA7F51, 0xA7F8A, 0xA7FBD, 0xA8001, 0xA800C, 0xA8012,
  0xA8033, 0xA807F, 0xA8089, 0xA81E3, 0xA81EA, 0xA81F3, 0xA81FC, 0xA820C, 0xA821B, 0xA821F, 0xA826E,
  0xA8272, 0xA8278, 0xA864D, 0xA866B, 0xA8840, 0xA884C, 0xA8863, 0xA897E, 0xA898B, 0xA89D2, 0xA8A00,
  0xA8C37, 0xA8C46, 0xA8C55, 0xA8C78, 0xA8C9D, 0xA8D64, 0xA8D70, 0xA8DB3, 0xA8EAB, 0xA8ECA, 0xA8F9B,
  0xA8FB0, 0xA8FB5, 0xA9091, 0xA9149, 0xA91C6, 0xA91CC, 0xA91D1, 0xA9577, 0xA9580, 0xA961C, 0xA96B6,
  0xA96B9, 0xA96E8, 0xA9751, 0xA975E, 0xA9762, 0xA9769, 0xA97CB, 0xA97ED, 0xA97F3, 0xA9801, 0xA98A8,
  0xA98DB, 0xA98DF, 0xA9996, 0xA9999, 0xA99AC, 0xA9AA8, 0xA9AD8, 0xA9ADF, 0xA9B25, 0xA9B2F, 0xA9B32,
  0xA9B3C, 0xA9B5A, 0xA9CE5, 0xA9E75, 0xA9E7F, 0xA9EA5, 0xA9EBB, 0xA9EC3, 0xA9ECD, 0xA9ED1, 0xA9EF9,
  0xA9EFD, 0xA9F0E, 0xA9F13, 0xA9F20, 0xA9F3B, 0xA9F4A, 0xA9F52, 0xA9F8D, 0xA9F9C, 0xA9FA0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0xE0020, 0x40010000, 0xA002E, 0x40010000, 0x40010000, 0x4010000, 0x4010000,
  0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000,
  0x4110000, 0x40010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA3012, 0x40010000,
  0xA5341, 0xA5344, 0xA5345, 0x4010000, 0x4010000, 0x40010000, 0x40010000, 0x40010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x82110000, 0x82110000,
  0x645D1, 0x645D3, 0x4010000, 0x4010000, 0x245D5, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x40010000,
  0x4010000, 0x4010000, 0x4010000, 0x245D9, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0xA1100, 0xA1101, 0xA11AA, 0xA1102, 0xA11AC, 0xA11AD, 0xA1103, 0xA1104, 0xA1105, 0xA11B0, 0xA11B1,
  0xA11B2, 0xA11B3, 0xA11B4, 0xA11B5, 0xA111A, 0xA1106, 0xA1107, 0xA1108, 0xA1121, 0xA1109, 0xA110A,
  0xA110B, 0xA110C, 0xA110D, 0xA110E, 0xA110F, 0xA1110, 0xA1111, 0xA1112, 0xA1161, 0xA1162, 0xA1163,
  0xA1164, 0xA1165, 0xA1166, 0xA1167, 0xA1168, 0xA1169, 0xA116A, 0xA116B, 0xA116C, 0xA116D, 0xA116E,
  0xA116F, 0xA1170, 0xA1171, 0xA1172, 0xA1173, 0xA1174, 0xA1175, 0, 0xA1114, 0xA1115, 0xA11C7,
  0xA11C8, 0xA11CC, 0xA11CE, 0xA11D3, 0xA11D7, 0xA11D9, 0xA111C, 0xA11DD, 0xA11DF, 0xA111D, 0xA111E,
  0xA1120, 0xA1122, 0xA1123, 0xA1127, 0xA1129, 0xA112B, 0xA112C, 0xA112D, 0xA112E, 0xA112F, 0xA1132,
  0xA1136, 0xA1140, 0xA1147, 0xA114C, 0xA11F1, 0xA11F2, 0xA1157, 0xA1158, 0xA1159, 0xA1184, 0xA1185,
  0xA1188, 0xA1191, 0xA1192, 0xA1194, 0xA119E, 0xA11A1, 0, 0x4010000, 0x4010000, 0xA4E00, 0xA4E8C,
  0xA4E09, 0xA56DB, 0xA4E0A, 0xA4E2D, 0xA4E0B, 0xA7532, 0xA4E59, 0xA4E19, 0xA4E01, 0xA5929, 0xA5730,
  0xA4EBA, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x6612D, 0x66139, 0x6613C, 0x6613F, 0x66142, 0x66145, 0x66148, 0x6614B, 0x6614E, 0x66151, 0x66154,
  0x66157, 0x6615A, 0x6615D, 0x66160, 0x66163, 0x66166, 0x66169, 0x6616C, 0x6616F, 0x66172, 0x66175,
  0x66178, 0x6617B, 0x6617E, 0x66181, 0x66184, 0x66187, 0x6618A, 0x6809C, 0x680A0, 0, 0x66190,
  0x66193, 0x66196, 0x66199, 0x6619C, 0x6619F, 0x661A2, 0x661A5, 0x661A8, 0x661AB, 0x661AE, 0x661B1,
  0x661B4, 0x661B7, 0x661BA, 0x661BD, 0x661C0, 0x661C3, 0x661C6, 0x661C9, 0x661CC, 0x661CF, 0x661D2,
  0x661D5, 0x661E1, 0x661E4, 0x661E7, 0x661EA, 0x661ED, 0x661F6, 0x661F9, 0x661FC, 0x661FF, 0x66202,
  0x66205, 0x66208, 0xA554F, 0xA5E7C, 0xA6587, 0xA7B8F, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x26211, 0x242E3, 0x242E6, 0x24135, 0x242EC, 0x242EF,
  0x242F2, 0x242F5, 0x242F8, 0x242FB, 0x242FE, 0x24301, 0x246ED, 0x2471F, 0x24725, 0x24727, 0xA1100,
  0xA1102, 0xA1103, 0xA1105, 0xA1106, 0xA1107, 0xA1109, 0xA110B, 0xA110C, 0xA110E, 0xA110F, 0xA1110,
  0xA1111, 0xA1112, 0xAAC00, 0xAB098, 0xAB2E4, 0xAB77C, 0xAB9C8, 0xABC14, 0xAC0AC, 0xAC544, 0xAC790,
  0xACC28, 0xACE74, 0xAD0C0, 0xAD30C, 0xAD558, 0x2477B, 0x2477D, 0xAC6B0, 0x4010000, 0xA4E00,
  0xA4E8C, 0xA4E09, 0xA56DB, 0xA4E94, 0xA516D, 0xA4E03, 0xA516B, 0xA4E5D, 0xA5341, 0xA6708, 0xA706B,
  0xA6C34, 0xA6728, 0xA91D1, 0xA571F, 0xA65E5, 0xA682A, 0xA6709, 0xA793E, 0xA540D, 0xA7279, 0xA8CA1,
  0xA795D, 0xA52B4, 0xA79D8, 0xA7537, 0xA5973, 0xA9069, 0xA512A, 0xA5370, 0xA6CE8, 0xA9805, 0xA4F11,
  0xA5199, 0xA6B63, 0xA4E0A, 0xA4E2D, 0xA4E0B, 0xA5DE6, 0xA53F3, 0xA533B, 0xA5B97, 0xA5B66, 0xA76E3,
  0xA4F01, 0xA8CC7, 0xA5354, 0xA591C, 0x24799, 0x2479B, 0x2479D, 0x2479F, 0x247A1, 0x24132, 0x247A3,
  0x24726, 0x247A5, 0x247A7, 0x247A9, 0x247AB, 0x247AF, 0x247B1, 0x247B3, 0x2422D, 0x24230, 0x247B5,
  0x247B7, 0x24825, 0x24827, 0x24829, 0x2482B, 0x2482D, 0x26229, 0x2622C, 0x2622F, 0x24839, 0x2623E,
  0x2483B, 0x26244, 0xA30A2, 0xA30A4, 0xA30A6, 0xA30A8, 0xA30AA, 0xA30AB, 0xA30AD, 0xA30AF, 0xA30B1,
  0xA30B3, 0xA30B5, 0xA30B7, 0xA30B9, 0xA30BB, 0xA30BD, 0xA30BF, 0xA30C1, 0xA30C4, 0xA30C6, 0xA30C8,
  0xA30CA, 0xA30CB, 0xA30CC, 0xA30CD, 0xA30CE, 0xA30CF, 0xA30D2, 0xA30D5, 0xA30D8, 0xA30DB, 0xA30DE,
  0xA30DF, 0xA30E0, 0xA30E1, 0xA30E2, 0xA30E4, 0xA30E6, 0xA30E8, 0xA30E9, 0xA30EA, 0xA30EB, 0xA30EC,
  0xA30ED, 0xA30EF, 0xA30F0, 0xA30F1, 0xA30F2, 0x245B5, 0x280C4, 0x280CC, 0x280D8, 0x2631F, 0x280E8,
  0x26322, 0x26325, 0x2A02B, 0x280E0, 0x26328, 0x2632B, 0x2632E, 0x28070, 0x2811C, 0x26331, 0x26334,
  0x245B7, 0x2633A, 0x280D0, 0x280D4, 0x24020, 0x2A053, 0x2C020, 0x2A058, 0x26055, 0x2A05D, 0x2A062,
  0x280F0, 0x2636D, 0x26370, 0x26373, 0x280F4, 0x2A067, 0x280F8, 0x26382, 0x2603C, 0x2633D, 0x245C1,
  0x245C3, 0x24060, 0x245C9, 0x263DF, 0x263E2, 0x2A03A, 0x263E5, 0x2807C, 0x2A049, 0x26523, 0x245CB,
  0x245CD, 0x2A03F, 0x28098, 0x2A035, 0x26124, 0x2A030, 0x245CF, 0x261D8, 0x261DB, 0x261DE, 0x261F0,
  0x261F3, 0x280B4, 0x26214, 0x247AD, 0x26286, 0x2628C, 0x2628F, 0x28094, 0x26295, 0x2629E, 0x262A7,
  0x2A026, 0x2808C, 0x24044, 0x2A044, 0x240DC, 0x280DC, 0x28022, 0x2630A, 0x2630D, 0x26310, 0x280E4,
  0x24635, 0x2631C, 0x28084, 0x24637, 0x2A04E, 0x2605A, 0x243A7, 0x243AA, 0x243AD, 0x243B0, 0x243B3,
  0x243B6, 0x243B9, 0x243BC, 0x243BF, 0x243C2, 0x263A6, 0x263A9, 0x263AC, 0x263AF, 0x263B2, 0x263B5,
  0x263B8, 0x263BB, 0x263BE, 0x263C1, 0x263C4, 0x263C7, 0x263CA, 0x263CD, 0x263D0, 0x263D3, 0x2465F,
  0x24661, 0x263D6, 0x24663, 0x24665, 0x243D9, 0x263D9, 0x263DC, 0x24669, 0x2466B, 0x2466D, 0x2466F,
  0x24671, 0x280FC, 0x2412B, 0x24673, 0x24675, 0x242B5, 0x24677, 0x24679, 0x2467B, 0x2467D, 0x26101,
  0x28100, 0x2467F, 0x24681, 0x2463D, 0x2463F, 0x24641, 0x240EE, 0x24365, 0x26364, 0x26367, 0x2636A,
  0x26376, 0x24643, 0x24645, 0x24647, 0x24649, 0x2464B, 0x2464D, 0x2464F, 0x24529, 0x2452C, 0x24532,
  0x26529, 0x2652C, 0x243DA, 0x26532, 0x26535, 0x26538, 0x243DD, 0x2653B, 0x260A4, 0x280A4, 0x2412B,
  0x2612A, 0x2620B, 0x2620E, 0x2601A, 0x2A01A, 0x2C01A, 0x24729, 0x24753, 0x24755, 0x24757, 0x2455D,
  0x24759, 0x2475B, 0x2475D, 0x2475F, 0x2475D, 0x24761, 0x24763, 0x24765, 0x24767, 0x24769, 0x24767,
  0x2476B, 0x2476D, 0, 0x2476F, 0x24771, 0x24773, 0x280EC, 0, 0x24775, 0x24777, 0x24639, 0x243D3,
  0x24779, 0x2477F, 0x24532, 0x24781, 0x2429A, 0x24783, 0x26292, 0x24785, 0x2467B, 0x26298, 0x2629B,
  0x2478D, 0, 0x262AD, 0x2478F, 0x24791, 0x24793, 0x24795, 0x262B3, 0x262B6, 0x242C6, 0x242C9,
  0x242CC, 0x242CF, 0x242D2, 0x242D5, 0x242D8, 0x242DB, 0x242DE, 0x262C2, 0x262C5, 0x262C8, 0x262CB,
  0x262CE, 0x262D1, 0x262D4, 0x262D7, 0x262DA, 0x262DD, 0x262E0, 0x262E3, 0x262E6, 0x262E9, 0x262EC,
  0x262EF, 0x262F2, 0x262F5, 0x262F8, 0x262FB, 0x262FE, 0x26301, 0x26304, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x40010000, 0x40010000, 0x40010000, 0xAA641, 0x4010000, 0xAA643, 0x4010000,
  0xAA645, 0x4010000, 0xAA647, 0x4010000, 0xAA649, 0x4010000, 0xAA64B, 0x4010000, 0xAA64D,
  0x4010000, 0xAA64F, 0x4010000, 0xAA651, 0x4010000, 0xAA653, 0x4010000, 0xAA655, 0x4010000,
  0xAA657, 0x4010000, 0xAA659, 0x4010000, 0xAA65B, 0x4010000, 0xAA65D, 0x4010000, 0xAA65F,
  0x4010000, 0xAA661, 0x4010000, 0xAA663, 0x4010000, 0xAA665, 0x4010000, 0xAA667, 0x4010000,
  0xAA669, 0x4010000, 0xAA66B, 0x4010000, 0xAA66D, 0x4010000, 0x4010000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x40010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x40010000, 0x40010000, 0xAA681,
  0x4010000, 0xAA683, 0x4010000, 0xAA685, 0x4010000, 0xAA687, 0x4010000, 0xAA689, 0x4010000,
  0xAA68B, 0x4010000, 0xAA68D, 0x4010000, 0xAA68F, 0x4010000, 0xAA691, 0x4010000, 0xAA693,
  0x4010000, 0xAA695, 0x4010000, 0xAA697, 0x4010000, 0xAA699, 0x4010000, 0xAA69B, 0x4010000,
  0xA044A, 0xA044C, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000, 0xAA723,
  0x4010000, 0xAA725, 0x4010000, 0xAA727, 0x4010000, 0xAA729, 0x4010000, 0xAA72B, 0x4010000,
  0xAA72D, 0x4010000, 0xAA72F, 0x4010000, 0x4010000, 0x4010000, 0xAA733, 0x4010000, 0xAA735,
  0x4010000, 0xAA737, 0x4010000, 0xAA739, 0x4010000, 0xAA73B, 0x4010000, 0xAA73D, 0x4010000,
  0xAA73F, 0x4010000, 0xAA741, 0x4010000, 0xAA743, 0x4010000, 0xAA745, 0x4010000, 0xAA747,
  0x4010000, 0xAA749, 0x4010000, 0xAA74B, 0x4010000, 0xAA74D, 0x4010000, 0xAA74F, 0x4010000,
  0xAA751, 0x4010000, 0xAA753, 0x4010000, 0xAA755, 0x4010000, 0xAA757, 0x4010000, 0xAA759,
  0x4010000, 0xAA75B, 0x4010000, 0xAA75D, 0x4010000, 0xAA75F, 0x4010000, 0xAA761, 0x4010000,
  0xAA763, 0x4010000, 0xAA765, 0x4010000, 0xAA767, 0x4010000, 0xAA769, 0x4010000, 0xAA76B,
  0x4010000, 0xAA76D, 0x4010000, 0xAA76F, 0x4010000, 0xAA76F, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xAA77A, 0x4010000, 0xAA77C, 0x4010000,
  0xA1D79, 0xAA77F, 0x4010000, 0xAA781, 0x4010000, 0xAA783, 0x4010000, 0xAA785, 0x4010000, 0xAA787,
  0x4010000, 0x40010000, 0x4010000, 0x4010000, 0xAA78C, 0x4010000, 0xA0265, 0x4010000, 0x4010000,
  0xAA791, 0x4010000, 0xAA793, 0x4010000, 0x4010000, 0x4010000, 0xAA797, 0x4010000, 0xAA799,
  0x4010000, 0xAA79B, 0x4010000, 0xAA79D, 0x4010000, 0xAA79F, 0x4010000, 0xAA7A1, 0x4010000,
  0xAA7A3, 0x4010000, 0xAA7A5, 0x4010000, 0xAA7A7, 0x4010000, 0xAA7A9, 0x4010000, 0xA0266, 0xA025C,
  0xA0261, 0xA026C, 0xA026A, 0x4010000, 0xA029E, 0xA0287, 0xA029D, 0xAAB53, 0xAA7B5, 0x4010000,
  0xAA7B7, 0x4010000, 0xAA7B9, 0x4010000, 0xAA7BB, 0x4010000, 0xAA7BD, 0x4010000, 0xAA7BF,
  0x4010000, 0xAA7C1, 0x4010000, 0xAA7C3, 0x4010000, 0xAA794, 0xA0282, 0xA1D8E, 0xAA7C8, 0x4010000,
  0xAA7CA, 0x4010000, 0, 0, 0, 0, 0, 0xAA7D1, 0x4010000, 0, 0x4010000, 0, 0x4010000, 0xAA7D7,
  0x4010000, 0xAA7D9, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0xA0063, 0xA0066, 0xA0071, 0xAA7F6,
  0x4010000, 0x4010000, 0xA0127, 0xA0153, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x82310000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x82110000, 0x82110000,
  0x4110000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x82310000, 0, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x40010000,
  0x40010000, 0, 0, 0, 0, 0, 0, 0x4410000, 0x4410000, 0x4810000, 0x4010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0x4110000, 0x4110000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82310000, 0x82110000, 0, 0, 0, 0, 0, 0,
  0, 0, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4310000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x4110000,
  0x4110000, 0x4310000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x4110000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4110000, 0x82110000, 0x4110000, 0x4010000, 0x4010000, 0x82110000, 0x4010000,
  0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x4010000, 0x82110000,
  0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x82110000,
  0x82110000, 0x4110000, 0x4110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4110000, 0x82310000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0xAA727, 0xAAB37, 0xA026B, 0xAAB52, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA028D, 0x40010000,
  0x40010000, 0, 0, 0, 0, 0xA13A0, 0xA13A1, 0xA13A2, 0xA13A3, 0xA13A4, 0xA13A5, 0xA13A6, 0xA13A7,
  0xA13A8, 0xA13A9, 0xA13AA, 0xA13AB, 0xA13AC, 0xA13AD, 0xA13AE, 0xA13AF, 0xA13B0, 0xA13B1, 0xA13B2,
  0xA13B3, 0xA13B4, 0xA13B5, 0xA13B6, 0xA13B7, 0xA13B8, 0xA13B9, 0xA13BA, 0xA13BB, 0xA13BC, 0xA13BD,
  0xA13BE, 0xA13BF, 0xA13C0, 0xA13C1, 0xA13C2, 0xA13C3, 0xA13C4, 0xA13C5, 0xA13C6, 0xA13C7, 0xA13C8,
  0xA13C9, 0xA13CA, 0xA13CB, 0xA13CC, 0xA13CD, 0xA13CE, 0xA13CF, 0xA13D0, 0xA13D1, 0xA13D2, 0xA13D3,
  0xA13D4, 0xA13D5, 0xA13D6, 0xA13D7, 0xA13D8, 0xA13D9, 0xA13DA, 0xA13DB, 0xA13DC, 0xA13DD, 0xA13DE,
  0xA13DF, 0xA13E0, 0xA13E1, 0xA13E2, 0xA13E3, 0xA13E4, 0xA13E5, 0xA13E6, 0xA13E7, 0xA13E8, 0xA13E9,
  0xA13EA, 0xA13EB, 0xA13EC, 0xA13ED, 0xA13EE, 0xA13EF, 0x4010000, 0x4010000, 0x4010000, 0x4110000,
  0x4110000, 0x82110000, 0x4110000, 0x4110000, 0x82110000, 0x4110000, 0x4110000, 0x4010000,
  0x4110000, 0x82310000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0xA8C48, 0xA66F4, 0xA8ECA, 0xA8CC8,
  0xA6ED1, 0xA4E32, 0xA53E5, 0xA9F9C, 0xA9F9C, 0xA5951, 0xA91D1, 0xA5587, 0xA5948, 0xA61F6, 0xA7669,
  0xA7F85, 0xA863F, 0xA87BA, 0xA88F8, 0xA908F, 0xA6A02, 0xA6D1B, 0xA70D9, 0xA73DE, 0xA843D, 0xA916A,
  0xA99F1, 0xA4E82, 0xA5375, 0xA6B04, 0xA721B, 0xA862D, 0xA9E1E, 0xA5D50, 0xA6FEB, 0xA85CD, 0xA8964,
  0xA62C9, 0xA81D8, 0xA881F, 0xA5ECA, 0xA6717, 0xA6D6A, 0xA72FC, 0xA90CE, 0xA4F86, 0xA51B7, 0xA52DE,
  0xA64C4, 0xA6AD3, 0xA7210, 0xA76E7, 0xA8001, 0xA8606, 0xA865C, 0xA8DEF, 0xA9732, 0xA9B6F, 0xA9DFA,
  0xA788C, 0xA797F, 0xA7DA0, 0xA83C9, 0xA9304, 0xA9E7F, 0xA8AD6, 0xA58DF, 0xA5F04, 0xA7C60, 0xA807E,
  0xA7262, 0xA78CA, 0xA8CC2, 0xA96F7, 0xA58D8, 0xA5C62, 0xA6A13, 0xA6DDA, 0xA6F0F, 0xA7D2F, 0xA7E37,
  0xA964B, 0xA52D2, 0xA808B, 0xA51DC, 0xA51CC, 0xA7A1C, 0xA7DBE, 0xA83F1, 0xA9675, 0xA8B80, 0xA62CF,
  0xA6A02, 0xA8AFE, 0xA4E39, 0xA5BE7, 0xA6012, 0xA7387, 0xA7570, 0xA5317, 0xA78FB, 0xA4FBF, 0xA5FA9,
  0xA4E0D, 0xA6CCC, 0xA6578, 0xA7D22, 0xA53C3, 0xA585E, 0xA7701, 0xA8449, 0xA8AAA, 0xA6BBA, 0xA8FB0,
  0xA6C88, 0xA62FE, 0xA82E5, 0xA63A0, 0xA7565, 0xA4EAE, 0xA5169, 0xA51C9, 0xA6881, 0xA7CE7, 0xA826F,
  0xA8AD2, 0xA91CF, 0xA52F5, 0xA5442, 0xA5973, 0xA5EEC, 0xA65C5, 0xA6FFE, 0xA792A, 0xA95AD, 0xA9A6A,
  0xA9E97, 0xA9ECE, 0xA529B, 0xA66C6, 0xA6B77, 0xA8F62, 0xA5E74, 0xA6190, 0xA6200, 0xA649A, 0xA6F23,
  0xA7149, 0xA7489, 0xA79CA, 0xA7DF4, 0xA806F, 0xA8F26, 0xA84EE, 0xA9023, 0xA934A, 0xA5217, 0xA52A3,
  0xA54BD, 0xA70C8, 0xA88C2, 0xA8AAA, 0xA5EC9, 0xA5FF5, 0xA637B, 0xA6BAE, 0xA7C3E, 0xA7375, 0xA4EE4,
  0xA56F9, 0xA5BE7, 0xA5DBA, 0xA601C, 0xA73B2, 0xA7469, 0xA7F9A, 0xA8046, 0xA9234, 0xA96F6, 0xA9748,
  0xA9818, 0xA4F8B, 0xA79AE, 0xA91B4, 0xA96B8, 0xA60E1, 0xA4E86, 0xA50DA, 0xA5BEE, 0xA5C3F, 0xA6599,
  0xA6A02, 0xA71CE, 0xA7642, 0xA84FC, 0xA907C, 0xA9F8D, 0xA6688, 0xA962E, 0xA5289, 0xA677B, 0xA67F3,
  0xA6D41, 0xA6E9C, 0xA7409, 0xA7559, 0xA786B, 0xA7D10, 0xA985E, 0xA516D, 0xA622E, 0xA9678, 0xA502B,
  0xA5D19, 0xA6DEA, 0xA8F2A, 0xA5F8B, 0xA6144, 0xA6817, 0xA7387, 0xA9686, 0xA5229, 0xA540F, 0xA5C65,
  0xA6613, 0xA674E, 0xA68A8, 0xA6CE5, 0xA7406, 0xA75E2, 0xA7F79, 0xA88CF, 0xA88E1, 0xA91CC, 0xA96E2,
  0xA533F, 0xA6EBA, 0xA541D, 0xA71D0, 0xA7498, 0xA85FA, 0xA96A3, 0xA9C57, 0xA9E9F, 0xA6797, 0xA6DCB,
  0xA81E8, 0xA7ACB, 0xA7B20, 0xA7C92, 0xA72C0, 0xA7099, 0xA8B58, 0xA4EC0, 0xA8336, 0xA523A, 0xA5207,
  0xA5EA6, 0xA62D3, 0xA7CD6, 0xA5B85, 0xA6D1E, 0xA66B4, 0xA8F3B, 0xA884C, 0xA964D, 0xA898B, 0xA5ED3,
  0xA5140, 0xA55C0, 0x4010000, 0x4010000, 0xA585A, 0x4010000, 0xA6674, 0x4010000, 0x4010000,
  0xA51DE, 0xA732A, 0xA76CA, 0xA793C, 0xA795E, 0xA7965, 0xA798F, 0xA9756, 0xA7CBE, 0xA7FBD,
  0x4010000, 0xA8612, 0x4010000, 0xA8AF8, 0x4010000, 0x4010000, 0xA9038, 0xA90FD, 0x4010000,
  0x4010000, 0x4010000, 0xA98EF, 0xA98FC, 0xA9928, 0xA9DB4, 0xA90DE, 0xA96B7, 0xA4FAE, 0xA50E7,
  0xA514D, 0xA52C9, 0xA52E4, 0xA5351, 0xA559D, 0xA5606, 0xA5668, 0xA5840, 0xA58A8, 0xA5C64, 0xA5C6E,
  0xA6094, 0xA6168, 0xA618E, 0xA61F2, 0xA654F, 0xA65E2, 0xA6691, 0xA6885, 0xA6D77, 0xA6E1A, 0xA6F22,
  0xA716E, 0xA722B, 0xA7422, 0xA7891, 0xA793E, 0xA7949, 0xA7948, 0xA7950, 0xA7956, 0xA795D, 0xA798D,
  0xA798E, 0xA7A40, 0xA7A81, 0xA7BC0, 0xA7DF4, 0xA7E09, 0xA7E41, 0xA7F72, 0xA8005, 0xA81ED, 0xA8279,
  0xA8279, 0xA8457, 0xA8910, 0xA8996, 0xA8B01, 0xA8B39, 0xA8CD3, 0xA8D08, 0xA8FB6, 0xA9038, 0xA96E3,
  0xA97FF, 0xA983B, 0xA6075, 0x22875, 0xA8218, 0, 0, 0xA4E26, 0xA51B5, 0xA5168, 0xA4F80, 0xA5145,
  0xA5180, 0xA52C7, 0xA52FA, 0xA559D, 0xA5555, 0xA5599, 0xA55E2, 0xA585A, 0xA58B3, 0xA5944, 0xA5954,
  0xA5A62, 0xA5B28, 0xA5ED2, 0xA5ED9, 0xA5F69, 0xA5FAD, 0xA60D8, 0xA614E, 0xA6108, 0xA618E, 0xA6160,
  0xA61F2, 0xA6234, 0xA63C4, 0xA641C, 0xA6452, 0xA6556, 0xA6674, 0xA6717, 0xA671B, 0xA6756, 0xA6B79,
  0xA6BBA, 0xA6D41, 0xA6EDB, 0xA6ECB, 0xA6F22, 0xA701E, 0xA716E, 0xA77A7, 0xA7235, 0xA72AF, 0xA732A,
  0xA7471, 0xA7506, 0xA753B, 0xA761D, 0xA761F, 0xA76CA, 0xA76DB, 0xA76F4, 0xA774A, 0xA7740, 0xA78CC,
  0xA7AB1, 0xA7BC0, 0xA7C7B, 0xA7D5B, 0xA7DF4, 0xA7F3E, 0xA8005, 0xA8352, 0xA83EF, 0xA8779, 0xA8941,
  0xA8986, 0xA8996, 0xA8ABF, 0xA8AF8, 0xA8ACB, 0xA8B01, 0xA8AFE, 0xA8AED, 0xA8B39, 0xA8B8A, 0xA8D08,
  0xA8F38, 0xA9072, 0xA9199, 0xA9276, 0xA967C, 0xA96E3, 0xA9756, 0xA97DB, 0xA97FF, 0xA980B, 0xA983B,
  0xA9B12, 0xA9F9C, 0x22876, 0x22877, 0x22878, 0xA3B9D, 0xA4018, 0xA4039, 0x22879, 0x2287A, 0x2287B,
  0xA9F43, 0xA9F8E, 0, 0, 0, 0, 0, 0, 0x242A1, 0x242A2, 0x242A5, 0x262A1, 0x262A4, 0x24581, 0x24581,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x24585, 0x24591, 0x24593, 0x24595, 0x24597, 0, 0, 0, 0, 0,
  0x24599, 0x82110000, 0x2459B, 0xA05E2, 0xA05D0, 0xA05D3, 0xA05D4, 0xA05DB, 0xA05DC, 0xA05DD,
  0xA05E8, 0xA05EA, 0xE002B, 0x245AF, 0x245B1, 0x26316, 0x26319, 0x245B3, 0x2483D, 0x2483F, 0x24841,
  0x24843, 0x24845, 0x24847, 0x24849, 0x2484B, 0, 0x2484D, 0x2486B, 0x2486D, 0x2486F, 0x24871, 0,
  0x24577, 0, 0x24579, 0x2457B, 0, 0x2457D, 0x2457F, 0, 0x2459D, 0x2459F, 0x245A1, 0x24316, 0x245A3,
  0x245A5, 0x245A7, 0x245A9, 0x245AB, 0x245AD, 0xA0671, 0xA0671, 0xA067B, 0xA067B, 0xA067B, 0xA067B,
  0xA067E, 0xA067E, 0xA067E, 0xA067E, 0xA0680, 0xA0680, 0xA0680, 0xA0680, 0xA067A, 0xA067A, 0xA067A,
  0xA067A, 0xA067F, 0xA067F, 0xA067F, 0xA067F, 0xA0679, 0xA0679, 0xA0679, 0xA0679, 0xA06A4, 0xA06A4,
  0xA06A4, 0xA06A4, 0xA06A6, 0xA06A6, 0xA06A6, 0xA06A6, 0xA0684, 0xA0684, 0xA0684, 0xA0684, 0xA0683,
  0xA0683, 0xA0683, 0xA0683, 0xA0686, 0xA0686, 0xA0686, 0xA0686, 0xA0687, 0xA0687, 0xA0687, 0xA0687,
  0xA068D, 0xA068D, 0xA068C, 0xA068C, 0xA068E, 0xA068E, 0xA0688, 0xA0688, 0xA0698, 0xA0698, 0xA0691,
  0xA0691, 0xA06A9, 0xA06A9, 0xA06A9, 0xA06A9, 0xA06AF, 0xA06AF, 0xA06AF, 0xA06AF, 0xA06B3, 0xA06B3,
  0xA06B3, 0xA06B3, 0xA06B1, 0xA06B1, 0xA06B1, 0xA06B1, 0xA06BA, 0xA06BA, 0xA06BB, 0xA06BB, 0xA06BB,
  0xA06BB, 0xA06C0, 0xA06C0, 0xA06C1, 0xA06C1, 0xA06C1, 0xA06C1, 0xA06BE, 0xA06BE, 0xA06BE, 0xA06BE,
  0xA06D2, 0xA06D2, 0xA06D3, 0xA06D3, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA06AD, 0xA06AD,
  0xA06AD, 0xA06AD, 0xA06C7, 0xA06C7, 0xA06C6, 0xA06C6, 0xA06C8, 0xA06C8, 0x245E3, 0xA06CB, 0xA06CB,
  0xA06C5, 0xA06C5, 0xA06C9, 0xA06C9, 0xA06D0, 0xA06D0, 0xA06D0, 0xA06D0, 0xA0649, 0xA0649, 0x24683,
  0x24683, 0x24685, 0x24685, 0x24687, 0x24687, 0x24689, 0x24689, 0x2468B, 0x2468B, 0x2468D, 0x2468D,
  0x2468F, 0x2468F, 0x2468F, 0x24691, 0x24691, 0x24691, 0xA06CC, 0xA06CC, 0xA06CC, 0xA06CC, 0x24693,
  0x24695, 0x24697, 0x24691, 0x24699, 0x2469B, 0x24514, 0x244B4, 0x2469D, 0x2469F, 0x246A1, 0x2440C,
  0x2440F, 0x24415, 0x24418, 0x246A3, 0x246A5, 0x246A7, 0x246A9, 0x246AB, 0x246AD, 0x2442E, 0x2440D,
  0x24410, 0x2410D, 0x24420, 0x246AF, 0x24416, 0x2442D, 0x2442A, 0x244D2, 0x24433, 0x2443C, 0x2443F,
  0x246B1, 0x2444E, 0x24451, 0x246B3, 0x246B5, 0x24454, 0x246B7, 0x2445D, 0x24112, 0x246B9, 0x24466,
  0x246BB, 0x246BD, 0x2446F, 0x24511, 0x246BF, 0x246C1, 0x246C3, 0x24472, 0x246C5, 0x246C7, 0x246C9,
  0x246CB, 0x246CD, 0x246CF, 0x246D1, 0x244F9, 0x246D3, 0x246D5, 0x24481, 0x24478, 0x24484, 0x24010,
  0x24001, 0x2400A, 0x24011, 0x2410C, 0x2441F, 0x2443A, 0x24428, 0x24425, 0x24400, 0x244A2, 0x246D7,
  0x244AB, 0x246D9, 0x246DB, 0x246DD, 0x2449C, 0x246DF, 0x246E1, 0x244CB, 0x24426, 0x246AE, 0x2448F,
  0x246E3, 0x244E3, 0x246E5, 0x246E7, 0x246E9, 0x663EE, 0x663F1, 0x663F4, 0x663F7, 0x663FA, 0x663FD,
  0x246EF, 0x246F1, 0x24697, 0x246F3, 0x24691, 0x24699, 0x2410A, 0x246F5, 0x2469D, 0x246F7, 0x2469F,
  0x246A1, 0x246F9, 0x246FB, 0x24418, 0x246FD, 0x246A3, 0x246A5, 0x246FF, 0x24701, 0x246A9, 0x24703,
  0x246AB, 0x246AD, 0x246BF, 0x246C1, 0x246C5, 0x246C7, 0x246C9, 0x246D1, 0x244F9, 0x246D3, 0x246D5,
  0x24010, 0x24001, 0x2400A, 0x24705, 0x2443A, 0x24707, 0x24709, 0x244AB, 0x2470B, 0x246D9, 0x246DB,
  0x246E9, 0x2470D, 0x2470F, 0x2448F, 0x244AD, 0x246E3, 0x244E3, 0x24693, 0x24695, 0x24711, 0x24697,
  0x24713, 0x2469B, 0x24514, 0x244B4, 0x2469D, 0x24715, 0x2440C, 0x2440F, 0x24415, 0x24418, 0x24717,
  0x246A9, 0x2442E, 0x2440D, 0x24410, 0x2410D, 0x24420, 0x24416, 0x2442D, 0x2442A, 0x244D2, 0x24433,
  0x2443C, 0x24719, 0x2443F, 0x246B1, 0x2444E, 0x24451, 0x246B3, 0x246B5, 0x246B7, 0x2445D, 0x24112,
  0x246B9, 0x24466, 0x246BB, 0x246BD, 0x2446F, 0x24511, 0x246C3, 0x24472, 0x246CB, 0x246CD, 0x246CF,
  0x246D1, 0x244F9, 0x24481, 0x24478, 0x24484, 0x24010, 0x24006, 0x24011, 0x2410C, 0x2441F, 0x2443A,
  0x24400, 0x244A2, 0x246D7, 0x244AB, 0x2471B, 0x246DD, 0x2449C, 0x2471D, 0x244CB, 0x24426, 0x246AE,
  0x2448F, 0x2400B, 0x24697, 0x24713, 0x2469D, 0x24715, 0x24418, 0x24717, 0x246A9, 0x24873, 0x24433,
  0x24721, 0x24448, 0x24723, 0x246D1, 0x244F9, 0x24010, 0x244AB, 0x2471B, 0x2448F, 0x2400B, 0x26403,
  0x26406, 0x26409, 0x2472B, 0x2472D, 0x2472F, 0x24731, 0x24733, 0x24735, 0x24737, 0x24739, 0x2473B,
  0x2473D, 0x2444F, 0x2447C, 0x24401, 0x24446, 0x244C1, 0x244B5, 0x2473F, 0x24741, 0x24743, 0x24745,
  0x24445, 0x24442, 0x24747, 0x24448, 0x24749, 0x2474B, 0x2474D, 0x2474F, 0x2472B, 0x2472D, 0x2472F,
  0x24731, 0x24733, 0x24735, 0x24737, 0x24739, 0x2473B, 0x2473D, 0x2444F, 0x2447C, 0x24401, 0x24446,
  0x244C1, 0x244B5, 0x2473F, 0x24741, 0x24743, 0x24745, 0x24445, 0x24442, 0x24747, 0x24448, 0x24749,
  0x2474B, 0x2474D, 0x2474F, 0x24445, 0x24442, 0x24747, 0x24448, 0x24721, 0x24723, 0x24454, 0x2442D,
  0x2442A, 0x244D2, 0x24445, 0x24442, 0x24747, 0x24454, 0x246B7, 0x24751, 0x24751, 0x40010000,
  0x40010000, 0x2640C, 0x2640F, 0x2640F, 0x26412, 0x26415, 0x26418, 0x2641B, 0x2641E, 0x26421,
  0x26421, 0x26424, 0x26427, 0x2642A, 0x2642D, 0x26430, 0x26433, 0x26433, 0x26436, 0x26439, 0x26439,
  0x2643C, 0x2643C, 0x2643F, 0x26442, 0x26442, 0x26445, 0x26448, 0x26448, 0x2644B, 0x2644B, 0x2644E,
  0x26451, 0x26451, 0x26454, 0x26454, 0x26457, 0x2645A, 0x2645D, 0x26460, 0x26460, 0x26463, 0x26466,
  0x26469, 0x2646C, 0x2646F, 0x2646F, 0x26472, 0x26475, 0x26478, 0x2647B, 0x2647E, 0x26481, 0x26481,
  0x26484, 0x26484, 0x26487, 0x26487, 0x2648A, 0x2610C, 0x2648D, 0x26490, 0x26493, 0x2641F, 0x26496,
  0, 0, 0x26499, 0x2649C, 0x2649F, 0x264A2, 0x264A5, 0x264A8, 0x264A8, 0x26400, 0x264AB, 0x264AE,
  0x264B1, 0x264B1, 0x264B4, 0x264B7, 0x264BA, 0x264BD, 0x264C0, 0x264C3, 0x264C6, 0x264C9, 0x264CC,
  0x264CF, 0x264D2, 0x264D5, 0x264D8, 0x264DB, 0x264DE, 0x264E1, 0x264E4, 0x264E7, 0x264EA, 0x264ED,
  0x264F0, 0x264F3, 0x26472, 0x26478, 0x264F6, 0x264F9, 0x264FC, 0x264FF, 0x26502, 0x26505, 0x26502,
  0x264FC, 0x26508, 0x2650B, 0x2650E, 0x26511, 0x26514, 0x26505, 0x2645D, 0x2643F, 0x26517, 0x2651A,
  0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x2651D, 0x26520, 0x28004, 0x28108, 0x2810C, 0x28110, 0x28114,
  0x28009, 0x2800E, 0x26000, 0x6EB00, 0x6E112, 0x28120, 0x40010000, 0x40010000, 0x40010000, 0x20000,
  0x20000, 0x20000, 0x20000, 0x20000, 0x20000, 0x20000, 0x20000, 0x20000, 0x20000, 0x20000, 0x20000,
  0x20000, 0x20000, 0x20000, 0x20000, 0xE002C, 0xA3001, 0, 0xE003A, 0xE003B, 0xE0021, 0xE003F,
  0xA3016, 0xA3017, 0, 0, 0, 0, 0, 0, 0, 0, 0xA2014, 0xA2013, 0xE005F, 0xE005F, 0xE0028, 0xE0029,
  0xE007B, 0xE007D, 0xA3014, 0xA3015, 0xA3010, 0xA3011, 0xA300A, 0xA300B, 0xA3008, 0xA3009, 0xA300C,
  0xA300D, 0xA300E, 0xA300F, 0x40010000, 0x40010000, 0xE005B, 0xE005D, 0x64589, 0x64589, 0x64589,
  0x64589, 0xE005F, 0xE005F, 0xE005F, 0xE002C, 0xA3001, 0, 0, 0xE003B, 0xE003A, 0xE003F, 0xE0021,
  0xA2014, 0xE0028, 0xE0029, 0xE007B, 0xE007D, 0xA3014, 0xA3015, 0xE0023, 0xE0026, 0xE002A, 0xE002B,
  0xA002D, 0xE003C, 0xE003E, 0xE003D, 0, 0xE005C, 0xE0024, 0xE0025, 0xE0040, 0, 0, 0, 0, 0x647F7,
  0x247F9, 0x643EE, 0x8010000, 0x643F1, 0, 0x643F4, 0x24403, 0x643F7, 0x24406, 0x643FA, 0x24409,
  0x643FD, 0x247FB, 0x647FD, 0x247FF, 0xA0621, 0xA0622, 0xA0622, 0xA0623, 0xA0623, 0xA0624, 0xA0624,
  0xA0625, 0xA0625, 0xA0626, 0xA0626, 0xA0626, 0xA0626, 0xA0627, 0xA0627, 0xA0628, 0xA0628, 0xA0628,
  0xA0628, 0xA0629, 0xA0629, 0xA062A, 0xA062A, 0xA062A, 0xA062A, 0xA062B, 0xA062B, 0xA062B, 0xA062B,
  0xA062C, 0xA062C, 0xA062C, 0xA062C, 0xA062D, 0xA062D, 0xA062D, 0xA062D, 0xA062E, 0xA062E, 0xA062E,
  0xA062E, 0xA062F, 0xA062F, 0xA0630, 0xA0630, 0xA0631, 0xA0631, 0xA0632, 0xA0632, 0xA0633, 0xA0633,
  0xA0633, 0xA0633, 0xA0634, 0xA0634, 0xA0634, 0xA0634, 0xA0635, 0xA0635, 0xA0635, 0xA0635, 0xA0636,
  0xA0636, 0xA0636, 0xA0636, 0xA0637, 0xA0637, 0xA0637, 0xA0637, 0xA0638, 0xA0638, 0xA0638, 0xA0638,
  0xA0639, 0xA0639, 0xA0639, 0xA0639, 0xA063A, 0xA063A, 0xA063A, 0xA063A, 0xA0641, 0xA0641, 0xA0641,
  0xA0641, 0xA0642, 0xA0642, 0xA0642, 0xA0642, 0xA0643, 0xA0643, 0xA0643, 0xA0643, 0xA0644, 0xA0644,
  0xA0644, 0xA0644, 0xA0645, 0xA0645, 0xA0645, 0xA0645, 0xA0646, 0xA0646, 0xA0646, 0xA0646, 0xA0647,
  0xA0647, 0xA0647, 0xA0647, 0xA0648, 0xA0648, 0xA0649, 0xA0649, 0xA064A, 0xA064A, 0xA064A, 0xA064A,
  0x24801, 0x24801, 0x24803, 0x24803, 0x24805, 0x24805, 0x24016, 0x24016, 0, 0, 0x20000, 0, 0xE0021,
  0xE0022, 0xE0023, 0xE0024, 0xE0025, 0xE0026, 0xE0027, 0xE0028, 0xE0029, 0xE002A, 0xE002B, 0xE002C,
  0xA002D, 0xA002E, 0xE002F, 0xA0030, 0xA0031, 0xA0032, 0xA0033, 0xA0034, 0xA0035, 0xA0036, 0xA0037,
  0xA0038, 0xA0039, 0xE003A, 0xE003B, 0xE003C, 0xE003D, 0xE003E, 0xE003F, 0xE0040, 0xA0061, 0xA0062,
  0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D,
  0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078,
  0xA0079, 0xA007A, 0xE005B, 0xE005C, 0xE005D, 0xE005E, 0xE005F, 0xE0060, 0xA0061, 0xA0062, 0xA0063,
  0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E,
  0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079,
  0xA007A, 0xE007B, 0xE007C, 0xE007D, 0xE007E, 0xA2985, 0xA2986, 0xA002E, 0xA300C, 0xA300D, 0xA3001,
  0xA30FB, 0xA30F2, 0xA30A1, 0xA30A3, 0xA30A5, 0xA30A7, 0xA30A9, 0xA30E3, 0xA30E5, 0xA30E7, 0xA30C3,
  0xA30FC, 0xA30A2, 0xA30A4, 0xA30A6, 0xA30A8, 0xA30AA, 0xA30AB, 0xA30AD, 0xA30AF, 0xA30B1, 0xA30B3,
  0xA30B5, 0xA30B7, 0xA30B9, 0xA30BB, 0xA30BD, 0xA30BF, 0xA30C1, 0xA30C4, 0xA30C6, 0xA30C8, 0xA30CA,
  0xA30CB, 0xA30CC, 0xA30CD, 0xA30CE, 0xA30CF, 0xA30D2, 0xA30D5, 0xA30D8, 0xA30DB, 0xA30DE, 0xA30DF,
  0xA30E0, 0xA30E1, 0xA30E2, 0xA30E4, 0xA30E6, 0xA30E8, 0xA30E9, 0xA30EA, 0xA30EB, 0xA30EC, 0xA30ED,
  0xA30EF, 0xA30F3, 0xA3099, 0xA309A, 0xA111A, 0xA1106, 0xA1107, 0xA1108, 0xA1121, 0xA1109, 0xA110A,
  0xA110B, 0xA110C, 0xA110D, 0xA110E, 0xA110F, 0xA1110, 0xA1111, 0xA1112, 0, 0, 0, 0xA1161, 0xA1162,
  0xA1163, 0xA1164, 0xA1165, 0xA1166, 0, 0, 0xA1167, 0xA1168, 0xA1169, 0xA116A, 0xA116B, 0xA116C, 0,
  0, 0xA116D, 0xA116E, 0xA116F, 0xA1170, 0xA1171, 0xA1172, 0, 0, 0xA1173, 0xA1174, 0xA1175, 0, 0, 0,
  0xA00A2, 0xA00A3, 0xA00AC, 0x64651, 0xA00A6, 0xA00A5, 0xA20A9, 0, 0xA2502, 0xA2190, 0xA2191,
  0xA2192, 0xA2193, 0xA25A0, 0xA25CB, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000,
  0x40010000, 0x4010000, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x4010000, 0x4010000, 0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x82110000, 0, 0, 0x82110000, 0x20010000, 0x20010000, 0x20010000, 0x20010000,
  0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000,
  0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000,
  0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0x20010000, 0, 0, 0, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x2287C,
  0x2287D, 0x2287E, 0x2287F, 0x22880, 0x22881, 0x22882, 0x22883, 0x22884, 0x22885, 0x22886, 0x22887,
  0x22888, 0x22889, 0x2288A, 0x2288B, 0x2288C, 0x2288D, 0x2288E, 0x2288F, 0x22890, 0x22891, 0x22892,
  0x22893, 0x22894, 0x22895, 0x22896, 0x22897, 0x22898, 0x22899, 0x2289A, 0x2289B, 0x2289C, 0x2289D,
  0x2289E, 0x2289F, 0x228A0, 0x228A1, 0x228A2, 0x228A3, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x228A4, 0x228A5, 0x228A6, 0x228A7, 0x228A8, 0x228A9,
  0x228AA, 0x228AB, 0x228AC, 0x228AD, 0x228AE, 0x228AF, 0x228B0, 0x228B1, 0x228B2, 0x228B3, 0x228B4,
  0x228B5, 0x228B6, 0x228B7, 0x228B8, 0x228B9, 0x228BA, 0x228BB, 0x228BC, 0x228BD, 0x228BE, 0x228BF,
  0x228C0, 0x228C1, 0x228C2, 0x228C3, 0x228C4, 0x228C5, 0x228C6, 0x228C7, 0, 0, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x228C8, 0x228C9, 0x228CA,
  0x228CB, 0x228CC, 0x228CD, 0x228CE, 0x228CF, 0x228D0, 0x228D1, 0x228D2, 0, 0x228D3, 0x228D4,
  0x228D5, 0x228D6, 0x228D7, 0x228D8, 0x228D9, 0x228DA, 0x228DB, 0x228DC, 0x228DD, 0x228DE, 0x228DF,
  0x228E0, 0x228E1, 0, 0x228E2, 0x228E3, 0x228E4, 0x228E5, 0x228E6, 0x228E7, 0x228E8, 0, 0x228E9,
  0x228EA, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0, 0, 0x4010000, 0xA02D0, 0xA02D1,
  0xA00E6, 0xA0299, 0xA0253, 0, 0xA02A3, 0xAAB66, 0xA02A5, 0xA02A4, 0xA0256, 0xA0257, 0xA1D91,
  0xA0258, 0xA025E, 0xA02A9, 0xA0264, 0xA0262, 0xA0260, 0xA029B, 0xA0127, 0xA029C, 0xA0267, 0xA0284,
  0xA02AA, 0xA02AB, 0xA026C, 0x228EB, 0xAA78E, 0xA026E, 0x228EC, 0xA028E, 0x228ED, 0xA00F8, 0xA0276,
  0xA0277, 0xA0071, 0xA027A, 0x228EE, 0xA027D, 0xA027E, 0xA0280, 0xA02A8, 0xA02A6, 0xAAB67, 0xA02A7,
  0xA0288, 0xA2C71, 0, 0xA028F, 0xA02A1, 0xA02A2, 0xA0298, 0xA01C0, 0xA01C1, 0xA01C2, 0x228EF,
  0x228F0, 0, 0, 0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0,
  0x8010000, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0x8010000, 0x8010000, 0, 0, 0,
  0x8010000, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0, 0, 0, 0, 0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0x8010000, 0x8010000, 0, 0, 0, 0, 0,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0,
  0x40010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0x8010000,
  0x8010000, 0x8010000, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0x82110000,
  0x82110000, 0x82110000, 0, 0, 0, 0, 0x82310000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x8010000, 0x9010000, 0x8010000, 0x9010000, 0x9010000,
  0x8010000, 0x8010000, 0x8810000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8810000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x8010000, 0x8010000, 0x9010000,
  0x82110000, 0x82110000, 0, 0, 0, 0, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8410000,
  0x9010000, 0x8410000, 0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x9010000,
  0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x9010000, 0x9010000, 0x8410000, 0x9010000, 0, 0, 0,
  0, 0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x9010000, 0x9010000, 0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x8010000, 0x228F1, 0x228F2,
  0x228F3, 0x228F4, 0x228F5, 0x228F6, 0x228F7, 0x228F8, 0x228F9, 0x228FA, 0x228FB, 0x228FC, 0x228FD,
  0x228FE, 0x228FF, 0x22900, 0x22901, 0x22902, 0x22903, 0x22904, 0x22905, 0x22906, 0x22907, 0x22908,
  0x22909, 0x2290A, 0x2290B, 0x2290C, 0x2290D, 0x2290E, 0x2290F, 0x22910, 0x22911, 0x22912, 0x22913,
  0x22914, 0x22915, 0x22916, 0x22917, 0x22918, 0x22919, 0x2291A, 0x2291B, 0x2291C, 0x2291D, 0x2291E,
  0x2291F, 0x22920, 0x22921, 0x22922, 0x22923, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x8010000,
  0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8810000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x9010000, 0x8410000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0,
  0, 0, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000,
  0x10010000, 0x10010000, 0x10010000, 0, 0, 0, 0, 0, 0, 0x10010000, 0x10010000, 0x10010000,
  0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000,
  0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000,
  0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000, 0x10010000,
  0x10010000, 0x10010000, 0x10010000, 0x10010000, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0x82110000, 0x82110000,
  0x8010000, 0, 0, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0, 0, 0, 0x8410000,
  0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8410000, 0x8410000,
  0x8410000, 0x9010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0, 0, 0, 0,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0,
  0, 0, 0, 0, 0x8410000, 0x8010000, 0x8410000, 0x8410000, 0x9010000, 0x9010000, 0x9010000,
  0x8010000, 0x8410000, 0x9010000, 0x9010000, 0x8410000, 0x8410000, 0x9010000, 0x8410000, 0x8410000,
  0x8010000, 0x8410000, 0x9010000, 0x9010000, 0x8410000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x9010000, 0x8410000, 0x8810000, 0, 0, 0, 0, 0x4110000, 0x82110000, 0x4110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82310000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x82310000, 0x4010000,
  0x4010000, 0x82110000, 0x82110000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x82310000, 0x4110000,
  0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000,
  0x82310000, 0x82110000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82310000, 0x82310000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4010000, 0, 0, 0,
  0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x4110000, 0x4310000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4110000, 0x82110000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000,
  0x82110000, 0x4110000, 0x4110000, 0x82110000, 0x4310000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000,
  0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82310000, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x4110000, 0x4110000,
  0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0,
  0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0, 0x82110000, 0x82110000, 0x4010000, 0x4110000, 0x4110000, 0x82110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0, 0, 0x4110000, 0x4110000, 0, 0, 0x4110000, 0x4110000,
  0x4310000, 0, 0, 0x4010000, 0, 0, 0, 0, 0, 0, 0x4110000, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x82310000,
  0x82110000, 0x82110000, 0x4110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0,
  0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x4110000, 0x82110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0x4110000, 0x82310000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0,
  0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000,
  0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x4110000, 0x82310000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0, 0, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x82110000,
  0x4110000, 0x82310000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4110000, 0x82110000, 0x4110000,
  0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4310000,
  0x82110000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0x4110000, 0x4110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82310000, 0,
  0, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x4110000, 0x82310000, 0x82110000, 0x4010000, 0, 0, 0, 0, 0x22924, 0x22925, 0x22926,
  0x22927, 0x22928, 0x22929, 0x2292A, 0x2292B, 0x2292C, 0x2292D, 0x2292E, 0x2292F, 0x22930, 0x22931,
  0x22932, 0x22933, 0x22934, 0x22935, 0x22936, 0x22937, 0x22938, 0x22939, 0x2293A, 0x2293B, 0x2293C,
  0x2293D, 0x2293E, 0x2293F, 0x22940, 0x22941, 0x22942, 0x22943, 0x4010000, 0x4010000, 0x4010000, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0, 0x4110000, 0x4110000, 0, 0, 0x82110000, 0x82110000, 0x4310000,
  0x82310000, 0x4010000, 0x4110000, 0x4010000, 0x4110000, 0x82110000, 0x4010000, 0x4010000,
  0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0, 0, 0x82110000, 0x82110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x82310000,
  0x4010000, 0x4010000, 0x4010000, 0x4110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x6110000, 0x6110000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x82110000, 0x82310000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x4110000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82310000, 0, 0, 0, 0, 0, 0, 0,
  0, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000,
  0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x82110000,
  0x82310000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x4110000, 0x6310000, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x4110000, 0x82110000, 0x82110000, 0x4110000, 0x82110000,
  0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0,
  0, 0, 0x82110000, 0, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82310000, 0x82310000, 0x4010000, 0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0, 0x82110000, 0x82110000, 0, 0x4110000, 0x4110000, 0x82110000, 0x4110000,
  0x82310000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x82110000,
  0x82110000, 0x4110000, 0x4110000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0x82110000,
  0x82110000, 0x4010000, 0x4110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0, 0, 0, 0x4110000, 0x4110000, 0x82110000, 0x4310000, 0x82310000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0,
  0, 0, 0x4010000, 0x4010000, 0x4010000, 0x22944, 0x22945, 0x22946, 0x22947, 0x22948, 0x22949,
  0x2294A, 0x2294B, 0x2294C, 0x2294D, 0x2294E, 0x2294F, 0x22950, 0x22951, 0x22952, 0x22953, 0x22954,
  0x22955, 0x22956, 0x22957, 0x22958, 0x22959, 0x2295A, 0x2295B, 0x2295C, 0x2295D, 0x2295E, 0x2295F,
  0x22960, 0x22961, 0x22962, 0x22963, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0x82110000,
  0x4010000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0x4110000, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x4010000, 0x4010000,
  0x40010000, 0x4010000, 0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4110000, 0x4110000, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0,
  0, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0, 0,
  0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x82110000, 0x82110000, 0x4010000,
  0x20000, 0x20000, 0x20000, 0x20000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x24807, 0x2453E, 0x2653E, 0x26541, 0x26544, 0x26547, 0x2654A, 0x4110000, 0x4110000, 0x82110000,
  0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4110000, 0x4110000, 0x4110000,
  0x4110000, 0x4110000, 0x4110000, 0, 0, 0, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x2454D, 0x24550, 0x2654D, 0x26550, 0x26553, 0x26556, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0,
  0x40010000, 0x40010000, 0x82110000, 0x82110000, 0x82110000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A,
  0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B,
  0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076,
  0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067,
  0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072,
  0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0xA0063,
  0xA0064, 0xA0065, 0xA0066, 0xA0067, 0, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E,
  0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079,
  0xA007A, 0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A,
  0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075,
  0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066,
  0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071,
  0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0,
  0xA0063, 0xA0064, 0, 0, 0xA0067, 0, 0, 0xA006A, 0xA006B, 0, 0, 0xA006E, 0xA006F, 0xA0070, 0xA0071,
  0, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062,
  0xA0063, 0xA0064, 0, 0xA0066, 0, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0,
  0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A,
  0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0, 0,
  0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0, 0xA0073, 0xA0074,
  0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0, 0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065,
  0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070,
  0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061,
  0xA0062, 0, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0, 0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0,
  0xA006F, 0, 0, 0, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0, 0xA0061,
  0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA006B, 0xA006C,
  0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077,
  0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0xA0063, 0xA0064, 0xA0065, 0xA0066, 0xA0067, 0xA0068,
  0xA0069, 0xA006A, 0xA006B, 0xA006C, 0xA006D, 0xA006E, 0xA006F, 0xA0070, 0xA0071, 0xA0072, 0xA0073,
  0xA0074, 0xA0075, 0xA0076, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0061, 0xA0062, 0xA0063, 0xA0064,
  0xA0065, 0xA0066, 0xA0067, 0xA0068, 0xA0069, 0xA006A, 0xA0077, 0xA0078, 0xA0079, 0xA007A, 0xA0131,
  0xA0237, 0, 0, 0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9,
  0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0xA03B8, 0xA03C3, 0xA03C4,
  0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9, 0xA2207, 0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5,
  0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0,
  0xA03C1, 0xA03C3, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9, 0xA2202, 0xA03B5,
  0xA03B8, 0xA03BA, 0xA03C6, 0xA03C1, 0xA03C0, 0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6,
  0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1,
  0xA03B8, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9, 0xA2207, 0xA03B1, 0xA03B2,
  0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD,
  0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0xA03C3, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8,
  0xA03C9, 0xA2202, 0xA03B5, 0xA03B8, 0xA03BA, 0xA03C6, 0xA03C1, 0xA03C0, 0xA03B1, 0xA03B2, 0xA03B3,
  0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE,
  0xA03BF, 0xA03C0, 0xA03C1, 0xA03B8, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9,
  0xA2207, 0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA,
  0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0xA03C3, 0xA03C3, 0xA03C4, 0xA03C5,
  0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9, 0xA2202, 0xA03B5, 0xA03B8, 0xA03BA, 0xA03C6, 0xA03C1, 0xA03C0,
  0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB,
  0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0xA03B8, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6,
  0xA03C7, 0xA03C8, 0xA03C9, 0xA2207, 0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7,
  0xA03B8, 0xA03B9, 0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0xA03C3,
  0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9, 0xA2202, 0xA03B5, 0xA03B8, 0xA03BA,
  0xA03C6, 0xA03C1, 0xA03C0, 0xA03C1, 0xA03B8, 0xA03C3, 0xA03C4, 0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8,
  0xA03C9, 0xA2207, 0xA03B1, 0xA03B2, 0xA03B3, 0xA03B4, 0xA03B5, 0xA03B6, 0xA03B7, 0xA03B8, 0xA03B9,
  0xA03BA, 0xA03BB, 0xA03BC, 0xA03BD, 0xA03BE, 0xA03BF, 0xA03C0, 0xA03C1, 0xA03C3, 0xA03C3, 0xA03C4,
  0xA03C5, 0xA03C6, 0xA03C7, 0xA03C8, 0xA03C9, 0xA2202, 0xA03B5, 0xA03B8, 0xA03BA, 0xA03C6, 0xA03C1,
  0xA03C0, 0xA03DD, 0xA03DD, 0, 0, 0xA0030, 0xA0031, 0xA0032, 0xA0033, 0xA0034, 0xA0035, 0xA0036,
  0xA0037, 0xA0038, 0xA0039, 0xA0030, 0xA0031, 0xA0032, 0xA0033, 0xA0034, 0xA0035, 0xA0036, 0xA0037,
  0xA0038, 0xA0039, 0xA0030, 0xA0031, 0xA0032, 0xA0033, 0xA0034, 0xA0035, 0xA0036, 0xA0037, 0xA0038,
  0xA0039, 0xA0030, 0xA0031, 0xA0032, 0xA0033, 0xA0034, 0xA0035, 0xA0036, 0xA0037, 0xA0038, 0xA0039,
  0xA0030, 0xA0031, 0xA0032, 0xA0033, 0xA0034, 0xA0035, 0xA0036, 0xA0037, 0xA0038, 0xA0039,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0x82110000, 0x82110000, 0,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0, 0, 0, 0, 0, 0xA0430, 0xA0431,
  0xA0432, 0xA0433, 0xA0434, 0xA0435, 0xA0436, 0xA0437, 0xA0438, 0xA043A, 0xA043B, 0xA043C, 0xA043E,
  0xA043F, 0xA0440, 0xA0441, 0xA0442, 0xA0443, 0xA0444, 0xA0445, 0xA0446, 0xA0447, 0xA0448, 0xA044B,
  0xA044D, 0xA044E, 0xAA689, 0xA04D9, 0xA0456, 0xA0458, 0xA04E9, 0xA04AF, 0xA04CF, 0xA0430, 0xA0431,
  0xA0432, 0xA0433, 0xA0434, 0xA0435, 0xA0436, 0xA0437, 0xA0438, 0xA043A, 0xA043B, 0xA043E, 0xA043F,
  0xA0441, 0xA0443, 0xA0444, 0xA0445, 0xA0446, 0xA0447, 0xA0448, 0xA044A, 0xA044B, 0xA0491, 0xA0456,
  0xA0455, 0xA045F, 0xA04AB, 0xAA651, 0xA04B1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x82110000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x82110000, 0, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0, 0, 0, 0, 0x40010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0, 0x4010000, 0x4010000, 0, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x22964, 0x22965, 0x22966, 0x22967, 0x22968, 0x22969, 0x2296A,
  0x2296B, 0x2296C, 0x2296D, 0x2296E, 0x2296F, 0x22970, 0x22971, 0x22972, 0x22973, 0x22974, 0x22975,
  0x22976, 0x22977, 0x22978, 0x22979, 0x2297A, 0x2297B, 0x2297C, 0x2297D, 0x2297E, 0x2297F, 0x22980,
  0x22981, 0x22982, 0x22983, 0x22984, 0x22985, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000,
  0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x8410000, 0x82110000, 0x82110000, 0x82110000,
  0x82110000, 0x82110000, 0x82110000, 0x82110000, 0xA010000, 0, 0, 0, 0, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0, 0, 0,
  0, 0x8010000, 0x8010000, 0, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000, 0x8010000,
  0xA0627, 0xA0628, 0xA062C, 0xA062F, 0, 0xA0648, 0xA0632, 0xA062D, 0xA0637, 0xA064A, 0xA0643,
  0xA0644, 0xA0645, 0xA0646, 0xA0633, 0xA0639, 0xA0641, 0xA0635, 0xA0642, 0xA0631, 0xA0634, 0xA062A,
  0xA062B, 0xA062E, 0xA0630, 0xA0636, 0xA0638, 0xA063A, 0xA066E, 0xA06BA, 0xA06A1, 0xA066F, 0,
  0xA0628, 0xA062C, 0, 0xA0647, 0, 0, 0xA062D, 0, 0xA064A, 0xA0643, 0xA0644, 0xA0645, 0xA0646,
  0xA0633, 0xA0639, 0xA0641, 0xA0635, 0xA0642, 0, 0xA0634, 0xA062A, 0xA062B, 0xA062E, 0, 0xA0636, 0,
  0xA063A, 0, 0, 0, 0, 0, 0, 0xA062C, 0, 0, 0, 0, 0xA062D, 0, 0xA064A, 0, 0xA0644, 0, 0xA0646,
  0xA0633, 0xA0639, 0, 0xA0635, 0xA0642, 0, 0xA0634, 0, 0, 0xA062E, 0, 0xA0636, 0, 0xA063A, 0,
  0xA06BA, 0, 0xA066F, 0, 0xA0628, 0xA062C, 0, 0xA0647, 0, 0, 0xA062D, 0xA0637, 0xA064A, 0xA0643, 0,
  0xA0645, 0xA0646, 0xA0633, 0xA0639, 0xA0641, 0xA0635, 0xA0642, 0, 0xA0634, 0xA062A, 0xA062B,
  0xA062E, 0, 0xA0636, 0xA0638, 0xA063A, 0xA066E, 0, 0xA06A1, 0, 0xA0627, 0xA0628, 0xA062C, 0xA062F,
  0xA0647, 0xA0648, 0xA0632, 0xA062D, 0xA0637, 0xA064A, 0, 0xA0644, 0xA0645, 0xA0646, 0xA0633,
  0xA0639, 0xA0641, 0xA0635, 0xA0642, 0xA0631, 0xA0634, 0xA062A, 0xA062B, 0xA062E, 0xA0630, 0xA0636,
  0xA0638, 0xA063A, 0, 0, 0, 0, 0, 0xA0628, 0xA062C, 0xA062F, 0, 0xA0648, 0xA0632, 0xA062D, 0xA0637,
  0xA064A, 0, 0xA0644, 0xA0645, 0xA0646, 0xA0633, 0xA0639, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x64811, 0x64813,
  0x64815, 0x64817, 0x64819, 0x6481B, 0x6481D, 0x6481F, 0x64821, 0x64823, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x66307, 0x66313, 0x66337, 0x66346, 0x66352, 0x6635E, 0x6637F,
  0x66340, 0x66343, 0x6634F, 0x66361, 0x66379, 0x6637C, 0x66526, 0x66217, 0x66385, 0x66388, 0x6638B,
  0x6638E, 0x66391, 0x66394, 0x66397, 0x6639A, 0x6639D, 0x663A0, 0x663A3, 0x26559, 0xA0063, 0xA0072,
  0x24773, 0x24853, 0x40010000, 0xA0071, 0xA0072, 0xA0073, 0xA0074, 0xA0075, 0xA0076, 0xA0077,
  0xA0078, 0xA0079, 0xA007A, 0x24855, 0x2475D, 0x24857, 0x24657, 0x2655C, 0x2485B, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x2485D, 0x2485F, 0x24861, 0x40010000, 0x40010000, 0x40010000, 0x24863, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000, 0x4010000,
  0x40010000, 0, 0, 0x24865, 0x24867, 0xA30B5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA624B,
  0xA5B57, 0xA53CC, 0xA30C7, 0xA4E8C, 0xA591A, 0xA89E3, 0xA5929, 0xA4EA4, 0xA6620, 0xA7121, 0xA6599,
  0xA524D, 0xA5F8C, 0xA518D, 0xA65B0, 0xA521D, 0xA7D42, 0xA751F, 0xA8CA9, 0xA58F0, 0xA5439, 0xA6F14,
  0xA6295, 0xA6355, 0xA4E00, 0xA4E09, 0xA904A, 0xA5DE6, 0xA4E2D, 0xA53F3, 0xA6307, 0xA8D70, 0xA6253,
  0xA7981, 0xA7A7A, 0xA5408, 0xA6E80, 0xA6709, 0xA6708, 0xA7533, 0xA5272, 0xA55B6, 0xA914D, 0, 0, 0,
  0, 0x2655F, 0x26562, 0x26565, 0x26568, 0x2656B, 0x2656E, 0x26571, 0x26574, 0x26280, 0, 0, 0, 0, 0,
  0, 0, 0xA5F97, 0xA53EF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0,
  0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0, 0, 0, 0, 0, 0, 0, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000,
  0x40010000, 0x40010000, 0x40010000, 0x40010000, 0x40010000, 0xA0030, 0xA0031, 0xA0032, 0xA0033,
  0xA0034, 0xA0035, 0xA0036, 0xA0037, 0xA0038, 0xA0039, 0, 0, 0, 0, 0, 0, 0xA4E3D, 0xA4E38, 0xA4E41,
  0x22986, 0xA4F60, 0xA4FAE, 0xA4FBB, 0xA5002, 0xA507A, 0xA5099, 0xA50E7, 0xA50CF, 0xA349E, 0x22987,
  0xA514D, 0xA5154, 0xA5164, 0xA5177, 0x22988, 0xA34B9, 0xA5167, 0xA518D, 0x22989, 0xA5197, 0xA51A4,
  0xA4ECC, 0xA51AC, 0xA51B5, 0x2298A, 0xA51F5, 0xA5203, 0xA34DF, 0xA523B, 0xA5246, 0xA5272, 0xA5277,
  0xA3515, 0xA52C7, 0xA52C9, 0xA52E4, 0xA52FA, 0xA5305, 0xA5306, 0xA5317, 0xA5349, 0xA5351, 0xA535A,
  0xA5373, 0xA537D, 0xA537F, 0xA537F, 0xA537F, 0x2298B, 0xA7070, 0xA53CA, 0xA53DF, 0x2298C, 0xA53EB,
  0xA53F1, 0xA5406, 0xA549E, 0xA5438, 0xA5448, 0xA5468, 0xA54A2, 0xA54F6, 0xA5510, 0xA5553, 0xA5563,
  0xA5584, 0xA5584, 0xA5599, 0xA55AB, 0xA55B3, 0xA55C2, 0xA5716, 0xA5606, 0xA5717, 0xA5651, 0xA5674,
  0xA5207, 0xA58EE, 0xA57CE, 0xA57F4, 0xA580D, 0xA578B, 0xA5832, 0xA5831, 0xA58AC, 0x2298D, 0xA58F2,
  0xA58F7, 0xA5906, 0xA591A, 0xA5922, 0xA5962, 0x2298E, 0x2298F, 0xA59EC, 0xA5A1B, 0xA5A27, 0xA59D8,
  0xA5A66, 0xA36EE, 0, 0xA5B08, 0xA5B3E, 0xA5B3E, 0x22990, 0xA5BC3, 0xA5BD8, 0xA5BE7, 0xA5BF3,
  0x22991, 0xA5BFF, 0xA5C06, 0, 0xA5C22, 0xA3781, 0xA5C60, 0xA5C6E, 0xA5CC0, 0xA5C8D, 0x22992,
  0xA5D43, 0x22993, 0xA5D6E, 0xA5D6B, 0xA5D7C, 0xA5DE1, 0xA5DE2, 0xA382F, 0xA5DFD, 0xA5E28, 0xA5E3D,
  0xA5E69, 0xA3862, 0x22994, 0xA387C, 0xA5EB0, 0xA5EB3, 0xA5EB6, 0xA5ECA, 0x22995, 0xA5EFE, 0x22996,
  0x22996, 0xA8201, 0xA5F22, 0xA5F22, 0xA38C7, 0x22997, 0x22998, 0xA5F62, 0xA5F6B, 0xA38E3, 0xA5F9A,
  0xA5FCD, 0xA5FD7, 0xA5FF9, 0xA6081, 0xA393A, 0xA391C, 0xA6094, 0x22999, 0xA60C7, 0xA6148, 0xA614C,
  0xA614E, 0xA614C, 0xA617A, 0xA618E, 0xA61B2, 0xA61A4, 0xA61AF, 0xA61DE, 0xA61F2, 0xA61F6, 0xA6210,
  0xA621B, 0xA625D, 0xA62B1, 0xA62D4, 0xA6350, 0x2299A, 0xA633D, 0xA62FC, 0xA6368, 0xA6383, 0xA63E4,
  0x2299B, 0xA6422, 0xA63C5, 0xA63A9, 0xA3A2E, 0xA6469, 0xA647E, 0xA649D, 0xA6477, 0xA3A6C, 0xA654F,
  0xA656C, 0x2299C, 0xA65E3, 0xA66F8, 0xA6649, 0xA3B19, 0xA6691, 0xA3B08, 0xA3AE4, 0xA5192, 0xA5195,
  0xA6700, 0xA669C, 0xA80AD, 0xA43D9, 0xA6717, 0xA671B, 0xA6721, 0xA675E, 0xA6753, 0x2299D, 0xA3B49,
  0xA67FA, 0xA6785, 0xA6852, 0xA6885, 0x2299E, 0xA688E, 0xA681F, 0xA6914, 0xA3B9D, 0xA6942, 0xA69A3,
  0xA69EA, 0xA6AA8, 0x2299F, 0xA6ADB, 0xA3C18, 0xA6B21, 0x229A0, 0xA6B54, 0xA3C4E, 0xA6B72, 0xA6B9F,
  0xA6BBA, 0xA6BBB, 0x229A1, 0x229A2, 0x229A3, 0xA6C4E, 0x229A4, 0xA6CBF, 0xA6CCD, 0xA6C67, 0xA6D16,
  0xA6D3E, 0xA6D77, 0xA6D41, 0xA6D69, 0xA6D78, 0xA6D85, 0x229A5, 0xA6D34, 0xA6E2F, 0xA6E6E, 0xA3D33,
  0xA6ECB, 0xA6EC7, 0x229A6, 0xA6DF9, 0xA6F6E, 0x229A7, 0x229A8, 0xA6FC6, 0xA7039, 0xA701E, 0xA701B,
  0xA3D96, 0xA704A, 0xA707D, 0xA7077, 0xA70AD, 0x229A9, 0xA7145, 0x229AA, 0xA719C, 0, 0xA7228,
  0xA7235, 0xA7250, 0x229AB, 0xA7280, 0xA7295, 0x229AC, 0x229AD, 0xA737A, 0xA738B, 0xA3EAC, 0xA73A5,
  0xA3EB8, 0xA3EB8, 0xA7447, 0xA745C, 0xA7471, 0xA7485, 0xA74CA, 0xA3F1B, 0xA7524, 0x229AE, 0xA753E,
  0x229AF, 0xA7570, 0x229B0, 0xA7610, 0x229B1, 0x229B2, 0x229B3, 0xA3FFC, 0xA4008, 0xA76F4, 0x229B4,
  0x229B5, 0x229B6, 0x229B7, 0xA771E, 0xA771F, 0xA771F, 0xA774A, 0xA4039, 0xA778B, 0xA4046, 0xA4096,
  0x229B8, 0xA784E, 0xA788C, 0xA78CC, 0xA40E3, 0x229B9, 0xA7956, 0x229BA, 0x229BB, 0xA798F, 0xA79EB,
  0xA412F, 0xA7A40, 0xA7A4A, 0xA7A4F, 0x229BC, 0x229BD, 0x229BD, 0, 0xA4202, 0x229BE, 0xA7BC6,
  0xA7BC9, 0xA4227, 0x229BF, 0xA7CD2, 0xA42A0, 0xA7CE8, 0xA7CE3, 0xA7D00, 0x229C0, 0xA7D63, 0xA4301,
  0xA7DC7, 0xA7E02, 0xA7E45, 0xA4334, 0x229C1, 0x229C2, 0xA4359, 0x229C3, 0xA7F7A, 0x229C4, 0xA7F95,
  0xA7FFA, 0xA8005, 0x229C5, 0x229C6, 0xA8060, 0x229C7, 0xA8070, 0x229C8, 0xA43D5, 0xA80B2, 0xA8103,
  0xA440B, 0xA813E, 0xA5AB5, 0x229C9, 0x229CA, 0x229CB, 0x229CC, 0xA8201, 0xA8204, 0xA8F9E, 0xA446B,
  0xA8291, 0xA828B, 0xA829D, 0xA52B3, 0xA82B1, 0xA82B3, 0xA82BD, 0xA82E6, 0x229CD, 0xA82E5, 0xA831D,
  0xA8363, 0xA83AD, 0xA8323, 0xA83BD, 0xA83E7, 0xA8457, 0xA8353, 0xA83CA, 0xA83CC, 0xA83DC, 0x229CE,
  0x229CF, 0x229D0, 0xA452B, 0xA84F1, 0xA84F3, 0xA8516, 0x229D1, 0xA8564, 0x229D2, 0xA455D, 0xA4561,
  0x229D3, 0x229D4, 0xA456B, 0xA8650, 0xA865C, 0xA8667, 0xA8669, 0xA86A9, 0xA8688, 0xA870E, 0xA86E2,
  0xA8779, 0xA8728, 0xA876B, 0xA8786, 0, 0xA87E1, 0xA8801, 0xA45F9, 0xA8860, 0xA8863, 0x229D5,
  0xA88D7, 0xA88DE, 0xA4635, 0xA88FA, 0xA34BB, 0x229D6, 0x229D7, 0xA46BE, 0xA46C7, 0xA8AA0, 0xA8AED,
  0xA8B8A, 0xA8C55, 0x229D8, 0xA8CAB, 0xA8CC1, 0xA8D1B, 0xA8D77, 0x229D9, 0x229DA, 0xA8DCB, 0xA8DBC,
  0xA8DF0, 0x229DB, 0xA8ED4, 0xA8F38, 0x229DC, 0x229DD, 0xA9094, 0xA90F1, 0xA9111, 0x229DE, 0xA911B,
  0xA9238, 0xA92D7, 0xA92D8, 0xA927C, 0xA93F9, 0xA9415, 0x229DF, 0xA958B, 0xA4995, 0xA95B7, 0x229E0,
  0xA49E6, 0xA96C3, 0xA5DB2, 0xA9723, 0x229E1, 0x229E2, 0xA4A6E, 0xA4A76, 0xA97E0, 0x229E3, 0xA4AB2,
  0x229E4, 0xA980B, 0xA980B, 0xA9829, 0x229E5, 0xA98E2, 0xA4B33, 0xA9929, 0xA99A7, 0xA99C2, 0xA99FE,
  0xA4BCE, 0x229E6, 0xA9B12, 0xA9C40, 0xA9CFD, 0xA4CCE, 0xA4CED, 0xA9D67, 0x229E7, 0xA4CF8, 0x229E8,
  0x229E9, 0x229EA, 0xA9EBB, 0xA4D56, 0xA9EF9, 0xA9EFE, 0xA9F05, 0xA9F0F, 0xA9F16, 0xA9F3B, 0x229EB,
  0, 0
};

const std::uint16_t blockIndex[] = {
  0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 13, 13, 13, 13, 13, 13, 36, 37, 38, 39, 40, 41, 41, 41,
  41, 42, 41, 41, 43, 44, 45, 46, 13, 47, 48, 49, 50, 51, 52, 53, 13, 13, 13, 54, 55, 56, 57, 58,
  59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 13, 13, 70, 71, 41, 72, 73, 74, 75, 76, 77, 78, 79,
  80, 81, 41, 82, 83, 84, 85, 86, 86, 87, 88, 89, 90, 91, 92, 93, 41, 94, 95, 96, 97, 74, 74, 98,
  99, 100, 86, 101, 102, 74, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 41, 115,
  41, 116, 13, 13, 117, 118, 119, 120, 13, 121, 122, 123, 124, 125, 126, 127, 128, 129, 122, 123,
  130, 131, 132, 133, 134, 135, 136, 123, 137, 138, 139, 127, 140, 141, 122, 123, 142, 143, 144,
  127, 145, 146, 147, 148, 149, 150, 151, 133, 152, 153, 154, 123, 155, 156, 157, 127, 158, 159,
  154, 123, 160, 161, 162, 127, 163, 164, 154, 13, 165, 166, 167, 127, 13, 168, 169, 13, 170, 171,
  172, 133, 173, 174, 13, 13, 175, 176, 177, 8, 8, 178, 13, 179, 180, 181, 182, 8, 8, 183, 184, 13,
  185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 8, 8, 13, 13, 196, 197, 13, 198, 199, 200,
  201, 202, 8, 8, 203, 13, 13, 204, 13, 13, 13, 13, 13, 205, 174, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 206, 207, 13, 13, 206, 13, 13, 208, 209, 210, 13, 13, 13, 209, 13, 13, 13,
  211, 13, 212, 13, 213, 13, 13, 13, 13, 13, 214, 215, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 174, 216, 13, 13, 13, 13, 13, 217, 13, 218, 13, 219, 13, 220, 221, 222, 13, 13,
  13, 223, 224, 225, 226, 213, 227, 226, 228, 228, 228, 228, 228, 229, 230, 228, 231, 13, 13, 13,
  13, 232, 13, 205, 233, 234, 235, 13, 236, 237, 13, 13, 177, 13, 226, 238, 40, 40, 13, 239, 13, 13,
  13, 240, 241, 242, 226, 226, 236, 41, 243, 8, 8, 8, 244, 13, 13, 245, 246, 13, 247, 248, 249, 13,
  250, 13, 13, 13, 251, 252, 13, 13, 253, 254, 255, 13, 13, 13, 256, 257, 258, 259, 145, 260, 261,
  262, 13, 13, 263, 264, 265, 266, 267, 268, 13, 269, 270, 271, 41, 41, 41, 41, 272, 273, 274, 275,
  276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
  295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
  314, 40, 315, 41, 41, 316, 317, 318, 319, 320, 321, 322, 323, 323, 324, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 325, 326, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 327, 328, 13, 13,
  13, 329, 40, 330, 40, 40, 40, 40, 40, 40, 40, 40, 331, 8, 332, 8, 333, 334, 335, 336, 337, 338,
  339, 340, 341, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 40, 40, 40, 342, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 40, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 40, 40, 40,
  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 343, 40, 40, 40, 40, 40, 40, 344, 40, 40, 40, 40,
  40, 345, 40, 40, 40, 40, 40, 40, 40, 40, 40, 346, 40, 347, 40, 40, 40, 40, 40, 40, 348, 349, 350,
  13, 13, 13, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 13, 13, 361, 13, 13, 13, 362, 363,
  13, 364, 365, 365, 365, 365, 41, 41, 40, 40, 40, 40, 40, 366, 8, 8, 40, 367, 40, 40, 40, 40, 40,
  368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 8, 8, 383, 40, 384,
  385, 174, 13, 13, 13, 13, 386, 215, 13, 13, 13, 13, 387, 388, 13, 13, 389, 390, 391, 392, 393,
  394, 395, 13, 13, 40, 40, 396, 13, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
  409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
  428, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 40, 40, 40, 40, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 212, 40, 40, 40, 331, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 429, 13, 177, 8, 430, 431, 432, 433, 434, 435, 13, 13, 13, 13, 13, 436, 40, 40, 437, 438, 439,
  440, 441, 442, 443, 444, 445, 446, 447, 448, 8, 449, 450, 13, 451, 452, 228, 228, 228, 453, 454,
  13, 13, 455, 456, 226, 41, 457, 13, 13, 458, 13, 459, 460, 13, 212, 116, 13, 13, 461, 462, 463,
  464, 205, 13, 13, 465, 466, 467, 468, 13, 469, 13, 13, 13, 470, 471, 472, 473, 474, 475, 476, 365,
  13, 13, 477, 478, 479, 480, 481, 482, 483, 13, 13, 484, 226, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 485, 13, 486, 13, 13, 177, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
  506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 8, 8, 517, 518, 519, 520, 521, 522, 523,
  524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
  543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 40, 553, 554, 555, 556, 557, 558, 559, 560, 8,
  8, 561, 562, 563, 41, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
  579, 580, 581, 582, 583, 584, 585, 586, 389, 587, 588, 589, 590, 8, 591, 13, 210, 592, 236, 236,
  8, 8, 13, 13, 13, 13, 13, 13, 13, 195, 593, 13, 13, 594, 40, 40, 40, 40, 595, 596, 315, 8, 8, 13,
  13, 597, 8, 8, 8, 8, 8, 8, 8, 8, 13, 212, 13, 13, 13, 139, 598, 599, 13, 13, 600, 13, 195, 13, 13,
  601, 13, 602, 13, 13, 603, 232, 8, 8, 604, 605, 606, 13, 13, 13, 13, 13, 13, 236, 226, 607, 608,
  609, 13, 177, 13, 13, 145, 13, 13, 13, 610, 611, 612, 613, 136, 614, 8, 8, 8, 8, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 364, 13, 232, 145, 8, 615, 616, 617,
  618, 8, 8, 8, 8, 619, 74, 74, 620, 74, 621, 74, 74, 74, 105, 622, 8, 8, 8, 74, 623, 74, 624, 74,
  625, 8, 8, 8, 8, 74, 74, 74, 626, 74, 627, 74, 74, 628, 629, 74, 630, 631, 631, 74, 74, 74, 74, 8,
  8, 632, 633, 634, 635, 74, 74, 74, 636, 74, 637, 74, 638, 639, 640, 641, 8, 8, 8, 8, 8, 74, 74,
  74, 74, 631, 8, 8, 8, 642, 643, 644, 645, 74, 74, 74, 646, 647, 86, 648, 649, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 650, 651, 74, 74, 652, 653, 8, 8, 8, 654, 74, 74, 655, 656, 657,
  658, 8, 659, 660, 8, 8, 661, 662, 8, 74, 635, 663, 13, 13, 664, 665, 666, 328, 667, 249, 13, 13,
  668, 669, 13, 217, 226, 670, 13, 671, 672, 673, 13, 13, 674, 249, 13, 13, 675, 676, 13, 174, 237,
  13, 136, 677, 678, 679, 8, 8, 8, 680, 602, 226, 13, 13, 681, 682, 226, 683, 122, 123, 684, 685,
  686, 687, 688, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13, 689, 690, 691, 692, 8, 13, 13, 13, 693, 694,
  226, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 695, 696, 697, 698, 8, 8, 13, 13, 13, 699, 700, 226,
  596, 8, 13, 13, 701, 702, 226, 8, 8, 8, 13, 211, 703, 13, 364, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  13, 13, 677, 704, 8, 8, 8, 8, 8, 8, 705, 706, 13, 13, 13, 707, 708, 709, 13, 710, 711, 226, 8, 8,
  8, 8, 712, 13, 13, 713, 714, 8, 715, 13, 13, 716, 717, 718, 13, 13, 719, 720, 721, 13, 13, 13, 13,
  217, 226, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 123, 13, 695, 722, 232, 13, 212, 13, 13,
  723, 724, 725, 8, 8, 8, 8, 726, 13, 13, 727, 728, 226, 729, 13, 730, 731, 226, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 732, 733, 154, 13, 734, 735, 226, 8, 8, 8, 8, 8, 139,
  13, 736, 40, 737, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 226, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 13,
  205, 237, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 485, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 13, 721, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 738, 739, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 364, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 217, 13, 205, 463, 13, 13, 13,
  13, 205, 226, 13, 236, 740, 13, 13, 13, 741, 232, 742, 136, 743, 13, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  744, 745, 13, 13, 13, 195, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 746, 747, 748, 748, 749, 670, 8, 8,
  8, 8, 750, 751, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 145, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 232, 8, 8, 217, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 752, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 721, 753, 8, 754, 755, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 177, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13,
  13, 13, 13, 195, 212, 217, 756, 757, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 41, 41, 758, 41, 759, 13, 13, 13, 13, 13, 13, 13, 485, 8, 8, 8, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 232, 13, 13, 760, 13, 13, 761, 762, 763, 764,
  13, 765, 766, 767, 13, 768, 8, 40, 40, 40, 40, 769, 8, 8, 8, 8, 8, 8, 8, 13, 485, 13, 485, 40, 40,
  40, 40, 40, 331, 13, 217, 8, 8, 8, 8, 8, 8, 8, 8, 340, 770, 771, 772, 773, 774, 775, 776, 777,
  778, 779, 780, 781, 340, 770, 771, 782, 783, 784, 785, 786, 787, 788, 789, 790, 339, 340, 770,
  771, 772, 773, 784, 775, 776, 777, 788, 789, 790, 339, 340, 770, 771, 791, 792, 793, 794, 795,
  796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 804, 806, 807, 808, 809, 810, 811, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 41, 41, 41, 812, 41, 41, 813, 464, 814, 815, 71, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 205, 816, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 817, 818, 819, 820, 821, 822, 823, 8, 824, 8, 8, 8, 8, 8, 8, 8,
  13, 13, 212, 825, 463, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 826, 8, 13,
  13, 827, 828, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 13, 827, 226, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 829, 205, 74, 74, 74, 74, 74, 74, 74, 74,
  74, 74, 74, 74, 830, 759, 8, 8, 831, 832, 833, 86, 834, 835, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 836, 74, 74, 74, 76, 8, 8, 8, 8, 836, 74, 74, 91, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 846, 8, 8, 8, 848, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 40, 40, 849, 40, 40, 40, 40, 40, 40, 396, 850, 851, 851, 851, 40, 852,
  853, 854, 855, 340, 856, 13, 857, 13, 13, 858, 859, 8, 8, 8, 133, 13, 860, 861, 862, 863, 864,
  865, 852, 8, 8, 8, 8, 8, 8, 8, 8, 8, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 866, 596,
  596, 40, 40, 40, 40, 40, 40, 40, 867, 40, 40, 40, 40, 40, 213, 849, 315, 849, 40, 40, 40, 868,
  213, 40, 40, 868, 40, 366, 848, 8, 8, 8, 8, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 40, 40, 40, 40, 40, 396, 366, 596, 869, 40, 40, 870, 871, 849, 869, 869, 40, 40, 40,
  40, 40, 40, 40, 40, 40, 872, 40, 40, 332, 8, 8, 873, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 8, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 226, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 236, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 692, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 139, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 236, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891,
  892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 195, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
};

const char32_t allCharsTo[] = {
  0x635, 0x644, 0x649, 0x20, 0x627, 0x644, 0x644, 0x647, 0x20, 0x639, 0x644, 0x64A, 0x647, 0x20,
  0x648, 0x633, 0x644, 0x645, 0x62C, 0x644, 0x20, 0x62C, 0x644, 0x627, 0x644, 0x647, 0x72, 0x61,
  0x64, 0x2215, 0x73, 0x32, 0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0x30DE, 0x30F3, 0x30B7,
  0x30E7, 0x30F3, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB,
  0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB, 0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8, 0x30D5, 0x30A1,
  0x30E9, 0x30C3, 0x30C9, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, 0x30D4, 0x30A2, 0x30B9, 0x30C8,
  0x30EB, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0x30AD,
  0x30ED, 0x30EF, 0x30C3, 0x30C8, 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0x30AF, 0x30EB, 0x30BC,
  0x30A4, 0x30ED, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, 0x31, 0x2044, 0x31, 0x30, 0x30AB, 0x30E9,
  0x30C3, 0x30C8, 0x76, 0x69, 0x69, 0x69, 0x28, 0x31, 0x30, 0x29, 0x30D0, 0x30FC, 0x30EC, 0x30EB,
  0x28, 0x31, 0x31, 0x29, 0x30EB, 0x30FC, 0x30D6, 0x30EB, 0x2032, 0x2032, 0x2032, 0x2032, 0x30DF,
  0x30AF, 0x30ED, 0x30F3, 0x28, 0x31, 0x35, 0x29, 0x30DE, 0x30A4, 0x30AF, 0x30ED, 0x30D5, 0x30A3,
  0x30FC, 0x30C8, 0x28, 0xC624, 0xC804, 0x29, 0x28, 0xC624, 0xD6C4, 0x29, 0x6D, 0x2215, 0x73, 0x32,
  0x28, 0x31, 0x36, 0x29, 0x28, 0x31, 0x39, 0x29, 0x28, 0x31, 0x37, 0x29, 0x30DD, 0x30A4, 0x30F3,
  0x30C8, 0x28, 0x32, 0x30, 0x29, 0x28, 0x31, 0x38, 0x29, 0x28, 0x31, 0x32, 0x29, 0x30A2, 0x30D1,
  0x30FC, 0x30C8, 0x28, 0x31, 0x33, 0x29, 0x30A2, 0x30EB, 0x30D5, 0x30A1, 0x30AD, 0x30E5, 0x30EA,
  0x30FC, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0x30E1, 0x30AC, 0x30C8,
  0x30F3, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0x30A4, 0x30CB, 0x30F3,
  0x30B0, 0x63, 0x2215, 0x6B, 0x67, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0x30B5, 0x30A4, 0x30AF, 0x30EB,
  0x30B7, 0x30EA, 0x30F3, 0x30B0, 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0x6B, 0x63, 0x61, 0x6C, 0x222B,
  0x222B, 0x222B, 0x222B, 0x627, 0x643, 0x628, 0x631, 0x645, 0x62D, 0x645, 0x62F, 0x635, 0x644,
  0x639, 0x645, 0x631, 0x633, 0x648, 0x644, 0x28, 0x31, 0x34, 0x29, 0x30AB, 0x30ED, 0x30EA, 0x30FC,
  0x631, 0x6CC, 0x627, 0x644, 0x30D5, 0x30E9, 0x30F3, 0x28, 0x32, 0x29, 0x6B, 0x70, 0x61, 0x28,
  0x1100, 0x29, 0x31, 0x2044, 0x34, 0x31, 0x2044, 0x32, 0x33, 0x2044, 0x34, 0x28, 0x1102, 0x29,
  0x28, 0x1103, 0x29, 0x28, 0x1105, 0x29, 0x28, 0x1106, 0x29, 0x28, 0x1107, 0x29, 0x28, 0x1109,
  0x29, 0x28, 0x110B, 0x29, 0x28, 0x110C, 0x29, 0x28, 0x110E, 0x29, 0x28, 0x110F, 0x29, 0x28,
  0x1110, 0x29, 0x28, 0x1111, 0x29, 0x28, 0x1112, 0x29, 0x28, 0xAC00, 0x29, 0x28, 0xB098, 0x29,
  0x28, 0xB2E4, 0x29, 0x28, 0xB77C, 0x29, 0x28, 0xB9C8, 0x29, 0x28, 0xBC14, 0x29, 0x28, 0xC0AC,
  0x29, 0x28, 0xC544, 0x29, 0x28, 0xC790, 0x29, 0x28, 0xCC28, 0x29, 0x28, 0xCE74, 0x29, 0x28,
  0xD0C0, 0x29, 0x28, 0xD30C, 0x29, 0x28, 0xD558, 0x29, 0x28, 0xC8FC, 0x29, 0x66, 0x61, 0x78, 0x28,
  0x4E00, 0x29, 0x28, 0x4E8C, 0x29, 0x28, 0x4E09, 0x29, 0x28, 0x56DB, 0x29, 0x28, 0x4E94, 0x29,
  0x28, 0x516D, 0x29, 0x28, 0x4E03, 0x29, 0x28, 0x516B, 0x29, 0x28, 0x4E5D, 0x29, 0x28, 0x5341,
  0x29, 0x28, 0x6708, 0x29, 0x28, 0x706B, 0x29, 0x28, 0x6C34, 0x29, 0x28, 0x6728, 0x29, 0x28,
  0x91D1, 0x29, 0x28, 0x571F, 0x29, 0x28, 0x65E5, 0x29, 0x28, 0x682A, 0x29, 0x28, 0x6709, 0x29,
  0x28, 0x793E, 0x29, 0x28, 0x540D, 0x29, 0x28, 0x7279, 0x29, 0x28, 0x8CA1, 0x29, 0x28, 0x795D,
  0x29, 0x30DA, 0x30CB, 0x30D2, 0x30D8, 0x30EB, 0x30C4, 0x30DA, 0x30F3, 0x30B9, 0x28, 0x52B4, 0x29,
  0x28, 0x4EE3, 0x29, 0x28, 0x547C, 0x29, 0x28, 0x5B66, 0x29, 0x28, 0x76E3, 0x29, 0x30DA, 0x30FC,
  0x30B8, 0x30D9, 0x30FC, 0x30BF, 0x28, 0x4F01, 0x29, 0x28, 0x8CC7, 0x29, 0x28, 0x5354, 0x29, 0x28,
  0x796D, 0x29, 0x28, 0x4F11, 0x29, 0x28, 0x81EA, 0x29, 0x28, 0x81F3, 0x29, 0x6D, 0x70, 0x61, 0x67,
  0x70, 0x61, 0x70, 0x74, 0x65, 0x30DC, 0x30EB, 0x30C8, 0x28, 0x6F, 0x29, 0x20, 0x308, 0x342, 0x28,
  0x33, 0x29, 0x28, 0x34, 0x29, 0x31, 0x2044, 0x37, 0x31, 0x2044, 0x39, 0x31, 0x30, 0x6708, 0x31,
  0x31, 0x6708, 0x31, 0x32, 0x6708, 0x31, 0x2044, 0x33, 0x20, 0x313, 0x300, 0x20, 0x313, 0x301,
  0x20, 0x313, 0x342, 0x65, 0x72, 0x67, 0x32, 0x2044, 0x33, 0x6C, 0x74, 0x64, 0x31, 0x2044, 0x35,
  0x32, 0x2044, 0x35, 0x20, 0x314, 0x300, 0x20, 0x314, 0x301, 0x20, 0x314, 0x342, 0x33, 0x2044,
  0x35, 0x34, 0x2044, 0x35, 0x31, 0x2044, 0x36, 0x35, 0x2044, 0x36, 0x31, 0x2044, 0x38, 0x33,
  0x2044, 0x38, 0x20, 0x308, 0x300, 0x20, 0x308, 0x301, 0x35, 0x2044, 0x38, 0x37, 0x2044, 0x38,
  0x28, 0x35, 0x29, 0x28, 0x36, 0x29, 0x28, 0x37, 0x29, 0x28, 0x38, 0x29, 0x3014, 0x6557, 0x3015,
  0x28, 0x39, 0x29, 0x30DD, 0x30F3, 0x30C9, 0x78, 0x69, 0x69, 0x30DB, 0x30FC, 0x30EB, 0x30DB,
  0x30FC, 0x30F3, 0x6C, 0x6F, 0x67, 0x30DE, 0x30A4, 0x30EB, 0x6D, 0x69, 0x6C, 0x6D, 0x6F, 0x6C,
  0x30DE, 0x30C3, 0x30CF, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6C, 0x30DE, 0x30EB, 0x30AF, 0xFB2, 0xF71,
  0xF80, 0x70, 0x70, 0x6D, 0x2035, 0x2035, 0x2035, 0x76, 0x2215, 0x6D, 0x61, 0x2215, 0x6D, 0xFB3,
  0xF71, 0xF80, 0x30, 0x2044, 0x33, 0x222E, 0x222E, 0x222E, 0x31, 0x30, 0x65E5, 0x31, 0x31, 0x65E5,
  0x31, 0x32, 0x65E5, 0x31, 0x33, 0x65E5, 0x31, 0x34, 0x65E5, 0x31, 0x35, 0x65E5, 0x31, 0x36,
  0x65E5, 0x31, 0x37, 0x65E5, 0x31, 0x38, 0x65E5, 0x31, 0x39, 0x65E5, 0x32, 0x30, 0x65E5, 0x32,
  0x31, 0x65E5, 0x32, 0x32, 0x65E5, 0x32, 0x33, 0x65E5, 0x32, 0x34, 0x65E5, 0x32, 0x35, 0x65E5,
  0x32, 0x36, 0x65E5, 0x32, 0x37, 0x65E5, 0x32, 0x38, 0x65E5, 0x32, 0x39, 0x65E5, 0x33, 0x30,
  0x65E5, 0x33, 0x31, 0x65E5, 0x67, 0x61, 0x6C, 0x28, 0x61, 0x29, 0x30E4, 0x30FC, 0x30C9, 0x30E4,
  0x30FC, 0x30EB, 0x30E6, 0x30A2, 0x30F3, 0x28, 0x62, 0x29, 0x5E9, 0x5BC, 0x5C1, 0x5E9, 0x5BC,
  0x5C2, 0x30EB, 0x30D4, 0x30FC, 0x30A2, 0x30FC, 0x30EB, 0x30A4, 0x30F3, 0x30C1, 0x30A6, 0x30A9,
  0x30F3, 0x30AA, 0x30F3, 0x30B9, 0x30AA, 0x30FC, 0x30E0, 0x30AB, 0x30A4, 0x30EA, 0x30AC, 0x30ED,
  0x30F3, 0x30AC, 0x30F3, 0x30DE, 0x28, 0x63, 0x29, 0x30AE, 0x30CB, 0x30FC, 0x30C0, 0x30FC, 0x30B9,
  0x28, 0x68, 0x29, 0x28, 0x69, 0x29, 0x28, 0x64, 0x29, 0x61, 0x2F, 0x63, 0x61, 0x2F, 0x73, 0x28,
  0x6A, 0x29, 0x28, 0x65, 0x29, 0x63, 0x2F, 0x6F, 0x63, 0x2F, 0x75, 0x74, 0x65, 0x6C, 0x28, 0x66,
  0x29, 0x28, 0x6B, 0x29, 0x6B, 0x68, 0x7A, 0x6D, 0x68, 0x7A, 0x67, 0x68, 0x7A, 0x30B1, 0x30FC,
  0x30B9, 0x30B3, 0x30EB, 0x30CA, 0x30B3, 0x30FC, 0x30DD, 0x74, 0x68, 0x7A, 0x28, 0x6C, 0x29, 0x28,
  0x6D, 0x29, 0x28, 0x67, 0x29, 0x30BB, 0x30F3, 0x30C1, 0x28, 0x70, 0x29, 0x28, 0x71, 0x29, 0x28,
  0x72, 0x29, 0x28, 0x73, 0x29, 0x28, 0x74, 0x29, 0x28, 0x75, 0x29, 0x28, 0x76, 0x29, 0x28, 0x77,
  0x29, 0x28, 0x78, 0x29, 0x28, 0x79, 0x29, 0x28, 0x7A, 0x29, 0x31, 0x30, 0x70B9, 0x31, 0x31,
  0x70B9, 0x31, 0x32, 0x70B9, 0x31, 0x33, 0x70B9, 0x31, 0x34, 0x70B9, 0x31, 0x35, 0x70B9, 0x31,
  0x36, 0x70B9, 0x31, 0x37, 0x70B9, 0x31, 0x38, 0x70B9, 0x31, 0x39, 0x70B9, 0x32, 0x30, 0x70B9,
  0x32, 0x31, 0x70B9, 0x32, 0x32, 0x70B9, 0x32, 0x33, 0x70B9, 0x32, 0x34, 0x70B9, 0x68, 0x70, 0x61,
  0x62, 0x61, 0x72, 0x64, 0x6D, 0x32, 0x64, 0x6D, 0x33, 0x30CE, 0x30C3, 0x30C8, 0x30CF, 0x30A4,
  0x30C4, 0x30D1, 0x30FC, 0x30C4, 0x3A, 0x3A, 0x3D, 0x3D, 0x3D, 0x3D, 0x20, 0x64C, 0x651, 0x20,
  0x64D, 0x651, 0x20, 0x64E, 0x651, 0x20, 0x64F, 0x651, 0x20, 0x650, 0x651, 0x20, 0x651, 0x670,
  0x646, 0x62C, 0x649, 0x640, 0x64E, 0x651, 0x640, 0x64F, 0x651, 0x640, 0x650, 0x651, 0x62A, 0x62C,
  0x645, 0x62A, 0x62D, 0x62C, 0x62A, 0x62D, 0x645, 0x62A, 0x62E, 0x645, 0x62A, 0x645, 0x62C, 0x62A,
  0x645, 0x62D, 0x62A, 0x645, 0x62E, 0x62C, 0x645, 0x62D, 0x62D, 0x645, 0x64A, 0x62D, 0x645, 0x649,
  0x633, 0x62D, 0x62C, 0x633, 0x62C, 0x62D, 0x633, 0x62C, 0x649, 0x633, 0x645, 0x62D, 0x633, 0x645,
  0x62C, 0x633, 0x645, 0x645, 0x635, 0x62D, 0x62D, 0x635, 0x645, 0x645, 0x634, 0x62D, 0x645, 0x634,
  0x62C, 0x64A, 0x634, 0x645, 0x62E, 0x634, 0x645, 0x645, 0x636, 0x62D, 0x649, 0x636, 0x62E, 0x645,
  0x637, 0x645, 0x62D, 0x637, 0x645, 0x645, 0x637, 0x645, 0x64A, 0x639, 0x62C, 0x645, 0x639, 0x645,
  0x645, 0x639, 0x645, 0x649, 0x63A, 0x645, 0x645, 0x63A, 0x645, 0x64A, 0x63A, 0x645, 0x649, 0x641,
  0x62E, 0x645, 0x642, 0x645, 0x62D, 0x642, 0x645, 0x645, 0x644, 0x62D, 0x645, 0x644, 0x62D, 0x64A,
  0x644, 0x62D, 0x649, 0x644, 0x62C, 0x62C, 0x644, 0x62E, 0x645, 0x644, 0x645, 0x62D, 0x645, 0x62D,
  0x62C, 0x645, 0x62D, 0x64A, 0x645, 0x62C, 0x62D, 0x645, 0x62C, 0x645, 0x645, 0x62E, 0x645, 0x645,
  0x62C, 0x62E, 0x647, 0x645, 0x62C, 0x647, 0x645, 0x645, 0x646, 0x62D, 0x645, 0x646, 0x62D, 0x649,
  0x646, 0x62C, 0x645, 0x646, 0x645, 0x64A, 0x646, 0x645, 0x649, 0x64A, 0x645, 0x645, 0x628, 0x62E,
  0x64A, 0x62A, 0x62C, 0x64A, 0x62A, 0x62C, 0x649, 0x62A, 0x62E, 0x64A, 0x62A, 0x62E, 0x649, 0x62A,
  0x645, 0x64A, 0x62A, 0x645, 0x649, 0x62C, 0x645, 0x64A, 0x62C, 0x62D, 0x649, 0x62C, 0x645, 0x649,
  0x633, 0x62E, 0x649, 0x635, 0x62D, 0x64A, 0x634, 0x62D, 0x64A, 0x636, 0x62D, 0x64A, 0x644, 0x62C,
  0x64A, 0x644, 0x645, 0x64A, 0x64A, 0x62D, 0x64A, 0x64A, 0x62C, 0x64A, 0x64A, 0x645, 0x64A, 0x645,
  0x645, 0x64A, 0x642, 0x645, 0x64A, 0x646, 0x62D, 0x64A, 0x639, 0x645, 0x64A, 0x643, 0x645, 0x64A,
  0x646, 0x62C, 0x62D, 0x645, 0x62E, 0x64A, 0x644, 0x62C, 0x645, 0x643, 0x645, 0x645, 0x62C, 0x62D,
  0x64A, 0x62D, 0x62C, 0x64A, 0x645, 0x62C, 0x64A, 0x641, 0x645, 0x64A, 0x628, 0x62D, 0x64A, 0x633,
  0x62E, 0x64A, 0x646, 0x62C, 0x64A, 0x635, 0x644, 0x6D2, 0x642, 0x644, 0x6D2, 0x30D4, 0x30AF,
  0x30EB, 0x28, 0x6E, 0x29, 0x6D, 0x6D, 0x32, 0x63, 0x6D, 0x32, 0x28, 0x31, 0x29, 0x6B, 0x6D, 0x32,
  0x6D, 0x6D, 0x33, 0x63, 0x6D, 0x33, 0x6B, 0x6D, 0x33, 0x1D158, 0x1D165, 0x1D16E, 0x1D158, 0x1D165,
  0x1D16F, 0x1D158, 0x1D165, 0x1D170, 0x1D158, 0x1D165, 0x1D171, 0x1D158, 0x1D165, 0x1D172, 0x1D1B9,
  0x1D165, 0x1D16E, 0x1D1BA, 0x1D165, 0x1D16E, 0x1D1B9, 0x1D165, 0x1D16F, 0x1D1BA, 0x1D165, 0x1D16F,
  0x3014, 0x73, 0x3015, 0x70, 0x70, 0x76, 0x3014, 0x672C, 0x3015, 0x3014, 0x4E09, 0x3015, 0x3014,
  0x4E8C, 0x3015, 0x3014, 0x5B89, 0x3015, 0x3014, 0x70B9, 0x3015, 0x3014, 0x6253, 0x3015, 0x3014,
  0x76D7, 0x3015, 0x3014, 0x52DD, 0x3015, 0x5DE, 0x5BC, 0x5E0, 0x5BC, 0x5E1, 0x5BC, 0x5E3, 0x5BC,
  0x5E4, 0x5BC, 0x73, 0x74, 0x20, 0x333, 0x574, 0x576, 0x21, 0x21, 0x20, 0x305, 0x3F, 0x3F, 0x3F,
  0x21, 0x21, 0x3F, 0x574, 0x565, 0x574, 0x56B, 0x57E, 0x576, 0x574, 0x56D, 0x5D9, 0x5B4, 0x5F2,
  0x5B7, 0x5E6, 0x5BC, 0x5E7, 0x5BC, 0x5E8, 0x5BC, 0x5EA, 0x5BC, 0x5D5, 0x5B9, 0x5D1, 0x5BF, 0x5DB,
  0x5BF, 0x5E4, 0x5BF, 0x5D0, 0x5DC, 0x5E9, 0x5C1, 0x5E9, 0x5C2, 0x5D0, 0x5B7, 0x4EE4, 0x548C,
  0x30AE, 0x30AC, 0x72, 0x73, 0xB0, 0x63, 0xB0, 0x66, 0x6E, 0x6F, 0x30C7, 0x30B7, 0x30C9, 0x30EB,
  0x73, 0x6D, 0x74, 0x6D, 0x30CA, 0x30CE, 0x30D4, 0x30B3, 0x30D3, 0x30EB, 0x30DA, 0x30BD, 0x20,
  0x3099, 0x20, 0x309A, 0x3088, 0x308A, 0x69, 0x76, 0x30B3, 0x30C8, 0x69, 0x78, 0x565, 0x582, 0x627,
  0x674, 0x648, 0x674, 0x6C7, 0x674, 0x64A, 0x674, 0x915, 0x93C, 0x916, 0x93C, 0x917, 0x93C, 0x91C,
  0x93C, 0x921, 0x93C, 0x922, 0x93C, 0x92B, 0x93C, 0x92F, 0x93C, 0x9A1, 0x9BC, 0x9A2, 0x9BC, 0x9AF,
  0x9BC, 0xA32, 0xA3C, 0xA38, 0xA3C, 0xA16, 0xA3C, 0xA17, 0xA3C, 0xA1C, 0xA3C, 0xA2B, 0xA3C, 0xB21,
  0xB3C, 0xB22, 0xB3C, 0xE4D, 0xE32, 0xECD, 0xEB2, 0xEAB, 0xE99, 0xEAB, 0xEA1, 0xF42, 0xFB7, 0xF4C,
  0xFB7, 0xF51, 0xFB7, 0xF56, 0xFB7, 0xF5B, 0xFB7, 0xF40, 0xFB5, 0xF71, 0xF72, 0xF71, 0xF74, 0xFB2,
  0xF80, 0xFB3, 0xF80, 0xF92, 0xFB7, 0xF9C, 0xFB7, 0xFA1, 0xFB7, 0xFA6, 0xFB7, 0xFAB, 0xFB7, 0xF90,
  0xFB5, 0x30EA, 0x30E9, 0x30EC, 0x30E0, 0x68, 0x61, 0x2ADD, 0x338, 0x3BC, 0x66, 0x3BC, 0x67, 0x6D,
  0x67, 0x3BC, 0x6C, 0x6D, 0x6C, 0x64, 0x6C, 0x6B, 0x6C, 0x66, 0x6D, 0x6E, 0x6D, 0x3BC, 0x6D, 0x20,
  0x304, 0x20, 0x301, 0x20, 0x327, 0x73, 0x73, 0x69, 0x307, 0x69, 0x6A, 0x6C, 0xB7, 0x64, 0x61,
  0x61, 0x75, 0x6F, 0x76, 0x70, 0x63, 0x2BC, 0x6E, 0x69, 0x75, 0x5E73, 0x6210, 0x662D, 0x548C,
  0x5927, 0x6B63, 0x660E, 0x6CBB, 0x6E, 0x61, 0x3BC, 0x61, 0x6B, 0x61, 0x6B, 0x62, 0x6D, 0x62, 0x67,
  0x62, 0x70, 0x66, 0x6E, 0x66, 0x626, 0x627, 0x626, 0x6D5, 0x626, 0x648, 0x626, 0x6C7, 0x626,
  0x6C6, 0x626, 0x6C8, 0x626, 0x6D0, 0x626, 0x649, 0x626, 0x62C, 0x626, 0x62D, 0x626, 0x645, 0x626,
  0x64A, 0x628, 0x62C, 0x628, 0x645, 0x628, 0x649, 0x628, 0x64A, 0x62A, 0x649, 0x62A, 0x64A, 0x62B,
  0x62C, 0x62B, 0x645, 0x62B, 0x649, 0x62B, 0x64A, 0x62E, 0x62D, 0x636, 0x62C, 0x636, 0x645, 0x637,
  0x62D, 0x638, 0x645, 0x63A, 0x62C, 0x641, 0x62C, 0x641, 0x62D, 0x641, 0x649, 0x641, 0x64A, 0x642,
  0x62D, 0x642, 0x649, 0x642, 0x64A, 0x643, 0x627, 0x643, 0x62C, 0x643, 0x62D, 0x643, 0x62E, 0x643,
  0x644, 0x643, 0x649, 0x643, 0x64A, 0x646, 0x62E, 0x646, 0x649, 0x646, 0x64A, 0x647, 0x62C, 0x647,
  0x649, 0x647, 0x64A, 0x64A, 0x649, 0x630, 0x670, 0x631, 0x670, 0x649, 0x670, 0x61, 0x2BE, 0x33,
  0x32, 0x626, 0x631, 0x626, 0x632, 0x626, 0x646, 0x628, 0x632, 0x628, 0x646, 0x62A, 0x631, 0x62A,
  0x632, 0x62A, 0x646, 0x62B, 0x631, 0x62B, 0x632, 0x62B, 0x646, 0x645, 0x627, 0x646, 0x631, 0x646,
  0x632, 0x646, 0x646, 0x64A, 0x631, 0x64A, 0x632, 0x626, 0x62E, 0x626, 0x647, 0x628, 0x647, 0x62A,
  0x647, 0x635, 0x62E, 0x646, 0x647, 0x647, 0x670, 0x33, 0x33, 0x633, 0x647, 0x634, 0x647, 0x33,
  0x34, 0x33, 0x35, 0x70, 0x73, 0x637, 0x649, 0x637, 0x64A, 0x639, 0x649, 0x639, 0x64A, 0x63A,
  0x649, 0x63A, 0x64A, 0x633, 0x649, 0x633, 0x64A, 0x634, 0x649, 0x634, 0x64A, 0x635, 0x649, 0x635,
  0x64A, 0x636, 0x649, 0x636, 0x64A, 0x634, 0x62E, 0x634, 0x631, 0x633, 0x631, 0x635, 0x631, 0x636,
  0x631, 0x627, 0x64B, 0x6E, 0x73, 0x3BC, 0x73, 0x6D, 0x73, 0x6E, 0x76, 0x3BC, 0x76, 0x6D, 0x76,
  0x6B, 0x76, 0x70, 0x77, 0x6E, 0x77, 0x3BC, 0x77, 0x6D, 0x77, 0x6B, 0x77, 0x6B, 0x3C9, 0x6D, 0x3C9,
  0x62, 0x71, 0x63, 0x63, 0x63, 0x64, 0x64, 0x62, 0x67, 0x79, 0x69, 0x6E, 0xCC38, 0xACE0, 0xC8FC,
  0xC758, 0x6B, 0x6B, 0x6B, 0x74, 0x6C, 0x6E, 0x6C, 0x78, 0x64, 0x17E, 0x6C, 0x6A, 0x6E, 0x6A, 0x70,
  0x68, 0x70, 0x72, 0x73, 0x72, 0x73, 0x76, 0x77, 0x62, 0x64, 0x7A, 0x33, 0x36, 0x33, 0x37, 0x33,
  0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x32, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, 0x30DB,
  0x30F3, 0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x33, 0x6708, 0x34, 0x6708, 0x1F00, 0x3B9, 0x1F01,
  0x3B9, 0x1F02, 0x3B9, 0x1F03, 0x3B9, 0x1F04, 0x3B9, 0x1F05, 0x3B9, 0x1F06, 0x3B9, 0x1F07, 0x3B9,
  0x20, 0x306, 0x20, 0x307, 0x20, 0x30A, 0x20, 0x328, 0x20, 0x303, 0x20, 0x30B, 0x1F20, 0x3B9,
  0x1F21, 0x3B9, 0x1F22, 0x3B9, 0x1F23, 0x3B9, 0x1F24, 0x3B9, 0x1F25, 0x3B9, 0x1F26, 0x3B9, 0x1F27,
  0x3B9, 0x20, 0x3B9, 0x1F60, 0x3B9, 0x1F61, 0x3B9, 0x1F62, 0x3B9, 0x1F63, 0x3B9, 0x1F64, 0x3B9,
  0x1F65, 0x3B9, 0x1F66, 0x3B9, 0x1F67, 0x3B9, 0x20, 0x64B, 0x640, 0x64B, 0x640, 0x651, 0x20, 0x652,
  0x640, 0x652, 0x644, 0x622, 0x644, 0x623, 0x644, 0x625, 0x1D157, 0x1D165, 0x1F70, 0x3B9, 0x3B1,
  0x3B9, 0x3AC, 0x3B9, 0x1FB6, 0x3B9, 0x30, 0x2C, 0x31, 0x2C, 0x32, 0x2C, 0x33, 0x2C, 0x34, 0x2C,
  0x35, 0x2C, 0x36, 0x2C, 0x37, 0x2C, 0x38, 0x2C, 0x39, 0x2C, 0x35, 0x6708, 0x36, 0x6708, 0x37,
  0x6708, 0x38, 0x6708, 0x39, 0x6708, 0x20, 0x342, 0x1F74, 0x3B9, 0x3B7, 0x3B9, 0x3AE, 0x3B9,
  0x1FC6, 0x3B9, 0x68, 0x67, 0x65, 0x76, 0x5D0, 0x5B8, 0x5D0, 0x5BC, 0x5D1, 0x5BC, 0x5D2, 0x5BC,
  0x5D3, 0x5BC, 0x5D4, 0x5BC, 0x5D5, 0x5BC, 0x5D6, 0x5BC, 0x5D8, 0x5BC, 0x1F7C, 0x3B9, 0x3C9, 0x3B9,
  0x77, 0x7A, 0x68, 0x76, 0x73, 0x64, 0x3CE, 0x3B9, 0x77, 0x63, 0x6D, 0x63, 0x6D, 0x64, 0x6D, 0x72,
  0x64, 0x6A, 0x307B, 0x304B, 0x30B3, 0x30B3, 0x1FF6, 0x3B9, 0x5D9, 0x5BC, 0x5DA, 0x5BC, 0x5DB,
  0x5BC, 0x5DC, 0x5BC, 0x62B, 0x647, 0x242EE, 0x2284A, 0x22844, 0x233D5, 0x25249, 0x25CD0, 0x27ED3,
  0x10428, 0x10429, 0x1042A, 0x1042B, 0x1042C, 0x1042D, 0x1042E, 0x1042F, 0x10430, 0x10431, 0x10432,
  0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 0x10438, 0x10439, 0x1043A, 0x1043B, 0x1043C, 0x1043D,
  0x1043E, 0x1043F, 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 0x10448,
  0x10449, 0x1044A, 0x1044B, 0x1044C, 0x1044D, 0x1044E, 0x1044F, 0x104D8, 0x104D9, 0x104DA, 0x104DB,
  0x104DC, 0x104DD, 0x104DE, 0x104DF, 0x104E0, 0x104E1, 0x104E2, 0x104E3, 0x104E4, 0x104E5, 0x104E6,
  0x104E7, 0x104E8, 0x104E9, 0x104EA, 0x104EB, 0x104EC, 0x104ED, 0x104EE, 0x104EF, 0x104F0, 0x104F1,
  0x104F2, 0x104F3, 0x104F4, 0x104F5, 0x104F6, 0x104F7, 0x104F8, 0x104F9, 0x104FA, 0x104FB, 0x10597,
  0x10598, 0x10599, 0x1059A, 0x1059B, 0x1059C, 0x1059D, 0x1059E, 0x1059F, 0x105A0, 0x105A1, 0x105A3,
  0x105A4, 0x105A5, 0x105A6, 0x105A7, 0x105A8, 0x105A9, 0x105AA, 0x105AB, 0x105AC, 0x105AD, 0x105AE,
  0x105AF, 0x105B0, 0x105B1, 0x105B3, 0x105B4, 0x105B5, 0x105B6, 0x105B7, 0x105B8, 0x105B9, 0x105BB,
  0x105BC, 0x1DF04, 0x1DF05, 0x1DF06, 0x1DF08, 0x1DF0A, 0x1DF1E, 0x10CC0, 0x10CC1, 0x10CC2, 0x10CC3,
  0x10CC4, 0x10CC5, 0x10CC6, 0x10CC7, 0x10CC8, 0x10CC9, 0x10CCA, 0x10CCB, 0x10CCC, 0x10CCD, 0x10CCE,
  0x10CCF, 0x10CD0, 0x10CD1, 0x10CD2, 0x10CD3, 0x10CD4, 0x10CD5, 0x10CD6, 0x10CD7, 0x10CD8, 0x10CD9,
  0x10CDA, 0x10CDB, 0x10CDC, 0x10CDD, 0x10CDE, 0x10CDF, 0x10CE0, 0x10CE1, 0x10CE2, 0x10CE3, 0x10CE4,
  0x10CE5, 0x10CE6, 0x10CE7, 0x10CE8, 0x10CE9, 0x10CEA, 0x10CEB, 0x10CEC, 0x10CED, 0x10CEE, 0x10CEF,
  0x10CF0, 0x10CF1, 0x10CF2, 0x118C0, 0x118C1, 0x118C2, 0x118C3, 0x118C4, 0x118C5, 0x118C6, 0x118C7,
  0x118C8, 0x118C9, 0x118CA, 0x118CB, 0x118CC, 0x118CD, 0x118CE, 0x118CF, 0x118D0, 0x118D1, 0x118D2,
  0x118D3, 0x118D4, 0x118D5, 0x118D6, 0x118D7, 0x118D8, 0x118D9, 0x118DA, 0x118DB, 0x118DC, 0x118DD,
  0x118DE, 0x118DF, 0x16E60, 0x16E61, 0x16E62, 0x16E63, 0x16E64, 0x16E65, 0x16E66, 0x16E67, 0x16E68,
  0x16E69, 0x16E6A, 0x16E6B, 0x16E6C, 0x16E6D, 0x16E6E, 0x16E6F, 0x16E70, 0x16E71, 0x16E72, 0x16E73,
  0x16E74, 0x16E75, 0x16E76, 0x16E77, 0x16E78, 0x16E79, 0x16E7A, 0x16E7B, 0x16E7C, 0x16E7D, 0x16E7E,
  0x16E7F, 0x1E922, 0x1E923, 0x1E924, 0x1E925, 0x1E926, 0x1E927, 0x1E928, 0x1E929, 0x1E92A, 0x1E92B,
  0x1E92C, 0x1E92D, 0x1E92E, 0x1E92F, 0x1E930, 0x1E931, 0x1E932, 0x1E933, 0x1E934, 0x1E935, 0x1E936,
  0x1E937, 0x1E938, 0x1E939, 0x1E93A, 0x1E93B, 0x1E93C, 0x1E93D, 0x1E93E, 0x1E93F, 0x1E940, 0x1E941,
  0x1E942, 0x1E943, 0x20122, 0x2063A, 0x2051C, 0x2054B, 0x291DF, 0x20A2C, 0x20B63, 0x214E4, 0x216A8,
  0x216EA, 0x219C8, 0x21B18, 0x21DE4, 0x21DE6, 0x22183, 0x2A392, 0x22331, 0x232B8, 0x261DA, 0x226D4,
  0x22B0C, 0x22BF1, 0x2300A, 0x233C3, 0x2346D, 0x236A3, 0x238A7, 0x23A8D, 0x21D0B, 0x23AFA, 0x23CBC,
  0x23D1E, 0x23ED1, 0x23F5E, 0x23F8E, 0x20525, 0x24263, 0x24608, 0x24735, 0x24814, 0x24C36, 0x24C92,
  0x2219F, 0x24FA1, 0x24FB8, 0x25044, 0x250F3, 0x250F2, 0x25119, 0x25133, 0x2541D, 0x25626, 0x2569A,
  0x256C5, 0x2597C, 0x25AA7, 0x25BAB, 0x25C80, 0x25F86, 0x26228, 0x26247, 0x262D9, 0x2633E, 0x264DA,
  0x26523, 0x265A8, 0x2335F, 0x267A7, 0x267B5, 0x23393, 0x2339C, 0x26B3C, 0x26C36, 0x26D6B, 0x26CD5,
  0x273CA, 0x26F2C, 0x26FB1, 0x270D2, 0x27667, 0x278AE, 0x27966, 0x27CA8, 0x27F2F, 0x20804, 0x208DE,
  0x285D2, 0x285ED, 0x2872E, 0x28BFA, 0x28D77, 0x29145, 0x2921A, 0x2940A, 0x29496, 0x295B6, 0x29B30,
  0x2A0CE, 0x2A105, 0x2A20E, 0x2A291, 0x2A600
};

const std::uint32_t comp_disallowed[5] = {
  0x2F868, 0x2F874, 0x2F91F, 0x2F95F, 0x2F9BF
};

const std::uint32_t comp_disallowed_std3[21] = {
  0x3C, 0x3D, 0x3E, 0xA8, 0x37E, 0x385, 0x1FBF, 0x1FC1, 0x1FCD, 0x1FCE, 0x1FCF, 0x1FDD, 0x1FDE,
  0x1FDF, 0x1FED, 0x1FEE, 0x1FEF, 0x1FFD, 0x1FFE, 0x2000, 0x2001
};

const std::uint8_t asciiData[128] = {
  0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
  0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
  0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
  0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
  0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x5, 0x5,
  0x5, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,
  0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5
};

// END-GENERATED

} // namespace util
} // namespace idna
} // namespace upa
// Copyright 2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
#ifndef UPA_IDNA_NFC_TABLE_H
#define UPA_IDNA_NFC_TABLE_H

#include <cstddef>
#include <cstdint>

namespace upa { // NOLINT(modernize-concat-nested-namespaces)
namespace idna { // NOLINT(modernize-concat-nested-namespaces)
namespace normalize {

struct codepoint_key_val {
    char32_t key;
    char32_t val;
};


// BEGIN-GENERATED
const std::size_t ccc_block_shift = 5;
const std::uint32_t ccc_block_mask = 0x1F;
const std::uint32_t ccc_default_start = 0x1E94B;
const std::uint8_t ccc_default_value = 0;
extern const std::uint8_t ccc_block[];
extern const std::uint8_t ccc_block_index[];

const std::size_t comp_block_shift = 5;
const std::uint32_t comp_block_mask = 0x1F;
const std::uint32_t comp_default_start = 0x11936;
const std::uint16_t comp_default_value = 0;
extern const std::uint16_t comp_block[];
extern const std::uint8_t comp_block_index[];
extern const codepoint_key_val comp_block_data[];

const std::size_t decomp_block_shift = 6;
const std::uint32_t decomp_block_mask = 0x3F;
const std::uint32_t decomp_default_start = 0x2FA1E;
const std::uint16_t decomp_default_value = 0;
extern const std::uint16_t decomp_block[];
extern const std::uint8_t decomp_block_index[];
extern const char32_t decomp_block_data[];
// END-GENERATED


// Canonical_Combining_Class (ccc)
inline std::uint8_t get_ccc(std::uint32_t cp) {
    if (cp >= ccc_default_start)
        return ccc_default_value;
    return ccc_block[
        (ccc_block_index[cp >> ccc_block_shift] << ccc_block_shift) |
        (cp & ccc_block_mask)
    ];
}

// Composition data
inline std::uint16_t get_composition_info(std::uint32_t cp) {
    if (cp >= comp_default_start)
        return comp_default_value;
    return comp_block[
        (comp_block_index[cp >> comp_block_shift] << comp_block_shift) |
        (cp & comp_block_mask)
    ];
}

inline std::size_t get_composition_len(std::uint16_t ci) {
    return ci >> 11;
}

inline const codepoint_key_val* get_composition_data(std::uint16_t ci) {
    return static_cast<const codepoint_key_val*>(comp_block_data) + (ci & 0x7FF);
}

// Decomposition data
inline std::uint16_t get_decomposition_info(std::uint32_t cp) {
    if (cp >= decomp_default_start)
        return decomp_default_value;
    return decomp_block[
        (decomp_block_index[cp >> decomp_block_shift] << decomp_block_shift) |
        (cp & decomp_block_mask)
    ];
}

inline std::size_t get_decomposition_len(std::uint16_t di) {
    return di >> 12;
}

inline const char32_t* get_decomposition_chars(std::uint16_t di) {
    return static_cast<const char32_t*>(decomp_block_data) + (di & 0xFFF);
}

} // namespace normalize
} // namespace idna
} // namespace upa

#endif // #ifndef UPA_IDNA_NFC_TABLE_H
// Copyright 2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// #include "upa/idna/nfc.h"

// #include "nfc_table.h"

// #include <algorithm>
// #include <iterator>


namespace upa { // NOLINT(modernize-concat-nested-namespaces)
namespace idna {

namespace hangul {
    constexpr char32_t SBase = 0xAC00;
    constexpr char32_t LBase = 0x1100;
    constexpr char32_t VBase = 0x1161;
    constexpr char32_t TBase = 0x11A7;
    constexpr char32_t LCount = 19;
    constexpr char32_t VCount = 21;
    constexpr char32_t TCount = 28;
    constexpr char32_t NCount = VCount * TCount; // 588
    constexpr char32_t SCount = LCount * NCount; // 11172
} // namespace hangul

void compose(std::u32string& str)
{
    if (str.length() == 0)
        return;
    std::size_t dest = 0;

    std::size_t i = 1;
    for (; i < str.length(); ++i) {
        auto last = str[i - 1];
        const auto ch = str[i];

        // 1. check to see if two current characters are L and V
        if (last >= hangul::LBase && last < hangul::LBase + hangul::LCount) {
            if (ch >= hangul::VBase && ch < hangul::VBase + hangul::VCount) {
                const auto LIndex = last - hangul::LBase;
                const auto VIndex = ch - hangul::VBase;
                // make syllable of form LV
                last = hangul::SBase + (LIndex * hangul::VCount + VIndex) * hangul::TCount;
                ++i; // ch consumed
                // check to see if the next character is T
                if (i < str.length()) {
                    const auto next_ch = str[i];
                    if (next_ch > hangul::TBase && next_ch < hangul::TBase + hangul::TCount) {
                        // make syllable of form LVT
                        last += next_ch - hangul::TBase; // TIndex
                        ++i; // next_ch consumed
                    }
                }
            }
            str[dest++] = last;
        }
        // 2. check to see if two current characters are LV and T
        else if (last >= hangul::SBase && last < hangul::SBase + hangul::SCount) {
            // SIndex = last - hangul::SBase
            if ((last - hangul::SBase) % hangul::TCount == 0 &&
                ch > hangul::TBase && ch < hangul::TBase + hangul::TCount) {
                // make syllable of form LVT
                last += ch - hangul::TBase; // TIndex
                ++i; // ch consumed
            }
            str[dest++] = last;
        }
        else {
            const auto L_dest = dest++;
            auto L_info = normalize::get_composition_info(last);
            int prev_ccc = -1;
            for (; i < str.length(); ++i) {
                const auto C = str[i];
                const int C_ccc = normalize::get_ccc(C);
                if (L_info != 0 && prev_ccc < C_ccc) {
                    // Check <last, C> has canonically equivalent Primary Composite
                    const auto* comp_arr = normalize::get_composition_data(L_info);
                    const auto* comp_arr_end = comp_arr + normalize::get_composition_len(L_info);
                    const auto* comp = std::lower_bound(comp_arr, comp_arr_end, C,
                        [](const normalize::codepoint_key_val& a, char32_t b) { return a.key < b; });
                    if (comp != comp_arr_end && comp->key == C) {
                        last = comp->val;
                        L_info = normalize::get_composition_info(last);
                        continue;
                    }
                }

                if (C_ccc == 0)
                    break;
                prev_ccc = C_ccc;
                str[dest++] = C;
            }
            str[L_dest] = last;
        }
    }
    if (i == str.length())
        str[dest++] = str[i - 1];
    str.resize(dest);
}

void canonical_decompose(std::u32string& str)
{
    std::u32string out;

    for (auto cp : str) {
        if (cp >= hangul::SBase && cp < hangul::SBase + hangul::SCount) {
            // Hangul Decomposition Algorithm
            const auto SIndex = cp - hangul::SBase;
            out += static_cast<char32_t>(hangul::LBase + SIndex / hangul::NCount); // L
            out += static_cast<char32_t>(hangul::VBase + (SIndex % hangul::NCount) / hangul::TCount); // V
            if (SIndex % hangul::TCount != 0)
                out += static_cast<char32_t>(hangul::TBase + SIndex % hangul::TCount); // T
        } else {
            const auto cp_info = normalize::get_decomposition_info(cp);
            if (cp_info) {
                // decompose
                out.append(
                    normalize::get_decomposition_chars(cp_info),
                    normalize::get_decomposition_len(cp_info)
                );
            } else {
                // no decomposition
                out += cp;
            }
        }
    }

    // Canonical Ordering Algorithm
    // Use Insertion sort:
    // https://en.wikipedia.org/wiki/Insertion_sort
    for (std::size_t i = 1; i < out.length(); ++i) {
        const auto ccc = normalize::get_ccc(out[i]);

        // is there a need to sort?
        if (ccc != 0 && normalize::get_ccc(out[i - 1]) > ccc) {
            // sort
            const auto cp = out[i];
            std::size_t j = i;
            do {
                out[j] = out[j - 1]; --j;
            } while (j != 0 && normalize::get_ccc(out[j - 1]) > ccc);
            out[j] = cp;
        }
    }

    str = std::move(out);
}

void normalize_nfc(std::u32string& str) {
    canonical_decompose(str);
    compose(str);
}

bool is_normalized_nfc(const char32_t* first, const char32_t* last) {
    std::u32string str{ first, last };
    normalize_nfc(str);
    return
        std::distance(first, last) == str.length() &&
        std::equal(first, last, str.data());
}


} // namespace idna
} // namespace upa
// Copyright 2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// #include "nfc_table.h"


namespace upa { // NOLINT(modernize-concat-nested-namespaces)
namespace idna { // NOLINT(modernize-concat-nested-namespaces)
namespace normalize {

// BEGIN-GENERATED
const std::uint8_t ccc_block[] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE8, 0xDC, 0xDC, 0xDC, 0xDC, 0xE8, 0xD8, 0xDC, 0xDC, 0xDC, 0xDC,
  0xDC, 0xCA, 0xCA, 0xDC, 0xDC, 0xDC, 0xDC, 0xCA, 0xCA, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
  0xDC, 0xDC, 0xDC, 0xDC, 0x1, 0x1, 0x1, 0x1, 0x1, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xF0, 0xE6, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xDC, 0xDC, 0, 0xE6, 0xE6,
  0xE6, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE8, 0xDC, 0xDC, 0xE6, 0xE9, 0xEA, 0xEA, 0xE9, 0xEA, 0xEA,
  0xE9, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xE6, 0xDE, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xDE, 0xE4, 0xE6, 0xA,
  0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x13, 0x13, 0x14, 0x15, 0x16, 0, 0x17, 0, 0x18, 0x19,
  0, 0xE6, 0xDC, 0, 0x12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0x1E,
  0x1F, 0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
  0x21, 0x22, 0xE6, 0xE6, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xDC, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC, 0xE6, 0, 0, 0xE6, 0xE6, 0, 0xDC, 0xE6, 0xE6, 0xDC, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x24,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6,
  0xDC, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xDC, 0xDC, 0xDC, 0xE6, 0xDC, 0xDC, 0xE6, 0xDC, 0xE6, 0xE6,
  0xE6, 0xDC, 0xE6, 0xDC, 0xE6, 0xDC, 0xE6, 0xDC, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xDC, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0, 0xE6, 0xE6, 0xE6, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0xDC,
  0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6,
  0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0, 0xDC, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xE6, 0xDC, 0xDC,
  0xDC, 0x1B, 0x1C, 0x1D, 0xE6, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0xE6, 0xDC, 0xE6, 0xE6, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0x54, 0x5B, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0x9, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x67, 0x67, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x6B, 0x6B, 0x6B, 0x6B, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0x76, 0x76, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7A, 0x7A, 0x7A, 0x7A, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0, 0xDC, 0, 0xD8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0x81, 0x82, 0, 0x84, 0, 0, 0, 0, 0, 0x82, 0x82, 0x82, 0x82, 0, 0, 0x82, 0, 0xE6,
  0xE6, 0x9, 0, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0x9, 0x9, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6,
  0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x9, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDE,
  0xE6, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6,
  0xDC, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xDC, 0, 0xDC,
  0xDC, 0xE6, 0xE6, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xDC, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x9, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0, 0x1, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0xDC,
  0xDC, 0xDC, 0xDC, 0xE6, 0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0, 0, 0, 0, 0xDC, 0, 0, 0, 0, 0, 0,
  0xE6, 0, 0, 0, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xDC, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xDC, 0xE6, 0xE6, 0xEA, 0xD6, 0xDC, 0xCA, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE8, 0xE4, 0xE4,
  0xDC, 0xDA, 0xE6, 0xE9, 0xDC, 0xE6, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6,
  0xE6, 0x1, 0x1, 0xE6, 0xE6, 0xE6, 0xE6, 0x1, 0x1, 0x1, 0xE6, 0xE6, 0, 0, 0, 0, 0xE6, 0, 0, 0, 0x1,
  0x1, 0xE6, 0xDC, 0xE6, 0x1, 0x1, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0x9, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDA, 0xE4, 0xE8, 0xDE, 0xE0, 0xE0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x8, 0x8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0, 0, 0, 0, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0xDC, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0, 0xE6, 0xE6,
  0xDC, 0, 0, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1A, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC,
  0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0, 0,
  0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0x1,
  0xDC, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0xE6, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0xDC, 0xDC, 0, 0, 0, 0, 0, 0, 0xDC, 0xDC, 0xE6, 0xE6, 0xE6, 0xDC,
  0xE6, 0xDC, 0xDC, 0xDC, 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xDC, 0xE6,
  0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x7, 0, 0, 0, 0, 0, 0xE6,
  0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x7, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7,
  0x7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0x7, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0, 0, 0, 0x9, 0x7, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x9, 0, 0, 0, 0, 0x7, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0x7, 0, 0x9, 0x9, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9, 0x9, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x1, 0x1, 0x1, 0x1, 0x1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x6, 0x6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1, 0, 0, 0,
  0, 0, 0, 0xD8, 0xD8, 0x1, 0x1, 0x1, 0, 0, 0, 0xE2, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0, 0, 0, 0, 0, 0,
  0, 0, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xDC,
  0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6,
  0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
  0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0xE6, 0xE6,
  0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE8, 0xE8, 0xDC, 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
  0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0x7, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

const std::uint8_t ccc_block_index[] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0,
  0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 0, 9, 0, 10, 11, 0, 0, 12, 13, 14, 15, 16, 0, 0, 0, 0,
  17, 18, 19, 20, 0, 21, 0, 22, 23, 0, 24, 25, 0, 0, 24, 26, 27, 0, 24, 26, 0, 0, 24, 26, 0, 0, 24,
  26, 0, 0, 0, 26, 0, 0, 24, 28, 0, 0, 24, 26, 0, 0, 29, 26, 0, 0, 0, 30, 0, 0, 31, 32, 0, 0, 33,
  34, 0, 35, 36, 0, 37, 38, 0, 39, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 43, 44, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0,
  49, 0, 50, 51, 0, 0, 52, 53, 54, 0, 55, 0, 56, 0, 57, 0, 0, 0, 0, 58, 59, 0, 0, 0, 0, 0, 0, 60,
  61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 69, 70, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 72, 73, 0, 0, 0, 0, 53, 74, 0, 75, 76,
  0, 0, 77, 78, 0, 0, 0, 0, 0, 0, 79, 80, 81, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 86,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 92, 0, 0, 93, 0,
  94, 0, 0, 0, 0, 0, 72, 95, 0, 96, 0, 0, 97, 98, 0, 77, 0, 0, 99, 0, 0, 100, 0, 0, 0, 0, 0, 101, 0,
  102, 26, 103, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 65, 106, 0, 0, 65, 0, 0, 0,
  107, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 109, 110, 0, 0, 0, 0, 78, 0, 44,
  111, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 114, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 117, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 122, 0, 0, 0, 0, 123, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 125, 0, 0, 126, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  127, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 131
};


const std::uint16_t comp_block[] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x800, 0x801,
  0x802, 0, 0, 0x8003, 0x1813, 0x2816, 0x301B, 0x8821, 0x832, 0x3833, 0x383A, 0x7841, 0x850, 0x2851,
  0x3056, 0x185C, 0x485F, 0x8068, 0x1078, 0, 0x407A, 0x3882, 0x3889, 0x9890, 0x10A3, 0x30A5, 0x10AB,
  0x48AD, 0x30B6, 0, 0, 0, 0, 0, 0, 0x80BC, 0x18CC, 0x28CF, 0x30D4, 0x88DA, 0x8EB, 0x38EC, 0x40F3,
  0x70FB, 0x1109, 0x290B, 0x3110, 0x1916, 0x4919, 0x8122, 0x1132, 0, 0x4134, 0x393C, 0x4143, 0x994B,
  0x115E, 0x3960, 0x1167, 0x5169, 0x3173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1979, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x217C, 0, 0x980, 0x981, 0x1182,
  0x984, 0, 0, 0x2185, 0, 0, 0, 0, 0x989, 0, 0, 0, 0, 0x218A, 0x198E, 0x991, 0, 0x992, 0, 0, 0,
  0x2193, 0, 0, 0, 0, 0, 0x2197, 0, 0x99B, 0x99C, 0x119D, 0x99F, 0, 0, 0x21A0, 0, 0, 0, 0, 0x9A4, 0,
  0, 0, 0, 0x21A5, 0x19A9, 0x9AC, 0, 0x9AD, 0, 0, 0, 0x21AE, 0, 0, 0, 0, 0, 0x21B2, 0x21B6, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x11BA, 0x11BC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0x11BE, 0x11C0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9C2, 0x9C3, 0, 0, 0,
  0, 0x9C4, 0x9C5, 0, 0, 0, 0, 0, 0, 0x9C6, 0x9C7, 0x9C8, 0x9C9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0x9CA, 0x29CB, 0x29D0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x29D5, 0x29DA,
  0, 0, 0, 0, 0, 0, 0x9DF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9E0, 0x9E1, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9E2, 0x9E3, 0x9E4,
  0x9E5, 0, 0, 0, 0, 0x9E6, 0x9E7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x9E8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x39E9, 0, 0, 0, 0x21F0, 0, 0x29F4, 0, 0x39F9, 0, 0, 0, 0, 0,
  0x2200, 0, 0xA04, 0, 0, 0, 0x3205, 0, 0, 0, 0x2A0B, 0, 0, 0xA10, 0, 0xA11, 0, 0, 0x4212, 0, 0, 0,
  0x221A, 0, 0x321E, 0, 0x4224, 0, 0, 0, 0, 0, 0x222C, 0, 0x1230, 0, 0, 0, 0x4232, 0, 0, 0, 0x323A,
  0x1A40, 0x1A43, 0, 0, 0xA46, 0, 0, 0, 0x1247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0xA49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x124A, 0, 0, 0xA4C, 0, 0x1A4D, 0x1250, 0xA52, 0x2253, 0,
  0xA57, 0, 0, 0, 0xA58, 0, 0, 0, 0, 0x2259, 0, 0, 0, 0xA5D, 0, 0, 0, 0xA5E, 0, 0xA5F, 0, 0, 0x1260,
  0, 0, 0xA62, 0, 0x1A63, 0x1266, 0xA68, 0x2269, 0, 0xA6D, 0, 0, 0, 0xA6E, 0, 0, 0, 0, 0x226F, 0, 0,
  0, 0xA73, 0, 0, 0, 0xA74, 0, 0xA75, 0, 0, 0, 0, 0, 0, 0, 0, 0xA76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA77, 0xA78, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA79, 0xA7A, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA7B, 0xA7C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1A7D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA80, 0, 0xA81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA83, 0, 0,
  0xA84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA85, 0, 0, 0, 0, 0, 0, 0, 0xA86, 0,
  0, 0xA87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1288, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1A8A, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0xA8D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x128E, 0xA90, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA91, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA92, 0, 0, 0, 0, 0, 0, 0x1A93, 0, 0, 0,
  0xA96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1297,
  0xA99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1A9A, 0, 0, 0xA9D, 0, 0, 0, 0, 0, 0, 0,
  0, 0xA9E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0xA9F, 0, 0xAA0, 0, 0xAA1, 0, 0xAA2, 0, 0xAA3, 0, 0, 0, 0xAA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xAA5,
  0, 0xAA6, 0, 0xAA7, 0xAA8, 0, 0, 0xAA9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0xAAA, 0xAAB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0xAAC, 0xAAD, 0, 0, 0, 0, 0, 0, 0xAAE, 0xAAF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x12B0, 0x12B2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xAB4, 0xAB5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0xAB6, 0xAB7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22B8, 0x22BC, 0xAC0,
  0xAC1, 0xAC2, 0xAC3, 0xAC4, 0xAC5, 0x22C6, 0x22CA, 0xACE, 0xACF, 0xAD0, 0xAD1, 0xAD2, 0xAD3,
  0x12D4, 0x12D6, 0, 0, 0, 0, 0, 0, 0x12D8, 0x12DA, 0, 0, 0, 0, 0, 0, 0x22DC, 0x22E0, 0xAE4, 0xAE5,
  0xAE6, 0xAE7, 0xAE8, 0xAE9, 0x22EA, 0x22EE, 0xAF2, 0xAF3, 0xAF4, 0xAF5, 0xAF6, 0xAF7, 0x1AF8,
  0x1AFB, 0, 0, 0, 0, 0, 0, 0x1AFE, 0x1B01, 0, 0, 0, 0, 0, 0, 0x1304, 0x1306, 0, 0, 0, 0, 0, 0,
  0x1308, 0x130A, 0, 0, 0, 0, 0, 0, 0x1B0C, 0x1B0F, 0, 0, 0, 0, 0, 0, 0, 0x1B12, 0, 0, 0, 0, 0, 0,
  0x2315, 0x2319, 0xB1D, 0xB1E, 0xB1F, 0xB20, 0xB21, 0xB22, 0x2323, 0x2327, 0xB2B, 0xB2C, 0xB2D,
  0xB2E, 0xB2F, 0xB30, 0xB31, 0, 0, 0, 0xB32, 0, 0, 0, 0, 0, 0, 0, 0xB33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB34, 0, 0, 0, 0, 0, 0, 0, 0, 0x1B35, 0, 0, 0, 0,
  0, 0, 0xB38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB39, 0, 0, 0, 0, 0, 0, 0, 0x1B3A, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB3D, 0, 0xB3E, 0, 0xB3F, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB40, 0, 0xB41, 0, 0xB42, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0xB43, 0, 0, 0, 0, 0xB44, 0, 0, 0xB45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB46, 0, 0xB47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0xB48, 0, 0, 0, 0, 0, 0, 0xB49, 0, 0xB4A, 0, 0, 0xB4B, 0, 0, 0, 0, 0xB4C, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB4D, 0, 0, 0xB4E, 0xB4F, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0xB50, 0xB51, 0, 0, 0xB52, 0xB53, 0, 0, 0xB54, 0xB55, 0xB56, 0xB57, 0, 0, 0, 0,
  0xB58, 0xB59, 0, 0, 0xB5A, 0xB5B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB5C, 0xB5D, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0xB5E, 0, 0, 0, 0, 0, 0xB5F, 0xB60, 0, 0xB61, 0, 0, 0, 0, 0, 0, 0xB62, 0xB63,
  0xB64, 0xB65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB66, 0, 0, 0, 0, 0xB67, 0, 0xB68,
  0, 0xB69, 0, 0xB6A, 0, 0xB6B, 0, 0xB6C, 0, 0xB6D, 0, 0xB6E, 0, 0xB6F, 0, 0xB70, 0, 0xB71, 0,
  0xB72, 0, 0, 0xB73, 0, 0xB74, 0, 0xB75, 0, 0, 0, 0, 0, 0, 0x1376, 0, 0, 0x1378, 0, 0, 0x137A, 0,
  0, 0x137C, 0, 0, 0x137E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB80, 0, 0, 0, 0, 0, 0, 0, 0, 0xB81, 0, 0, 0, 0, 0xB82, 0, 0xB83, 0,
  0xB84, 0, 0xB85, 0, 0xB86, 0, 0xB87, 0, 0xB88, 0, 0xB89, 0, 0xB8A, 0, 0xB8B, 0, 0xB8C, 0, 0xB8D,
  0, 0, 0xB8E, 0, 0xB8F, 0, 0xB90, 0, 0, 0, 0, 0, 0, 0x1391, 0, 0, 0x1393, 0, 0, 0x1395, 0, 0,
  0x1397, 0, 0, 0x1399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB9B, 0xB9C,
  0xB9D, 0xB9E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xB9F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xBA0, 0, 0xBA1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xBA2, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0xBA3, 0xBA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x13A5,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1BA7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xBAA, 0xBAB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xBAC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

const std::uint8_t comp_block_index[] = {
  0, 1, 2, 3, 0, 4, 5, 6, 7, 0, 8, 9, 0, 10, 0, 11, 0, 12, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 14, 15,
  16, 0, 17, 18, 19, 20, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
  0, 29, 0, 30, 0, 0, 0, 31, 0, 0, 32, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38,
  39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, 43, 44, 0,
  45, 46, 47, 48, 0, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 54, 55, 56, 57,
  58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 67, 0, 0, 0, 68,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0,
  0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72
};

const codepoint_key_val comp_block_data[] = {
  {0x338,0x226E}, {0x338,0x2260}, {0x338,0x226F}, {0x300,0xC0}, {0x301,0xC1}, {0x302,0xC2},
  {0x303,0xC3}, {0x304,0x100}, {0x306,0x102}, {0x307,0x226}, {0x308,0xC4}, {0x309,0x1EA2},
  {0x30A,0xC5}, {0x30C,0x1CD}, {0x30F,0x200}, {0x311,0x202}, {0x323,0x1EA0}, {0x325,0x1E00},
  {0x328,0x104}, {0x307,0x1E02}, {0x323,0x1E04}, {0x331,0x1E06}, {0x301,0x106}, {0x302,0x108},
  {0x307,0x10A}, {0x30C,0x10C}, {0x327,0xC7}, {0x307,0x1E0A}, {0x30C,0x10E}, {0x323,0x1E0C},
  {0x327,0x1E10}, {0x32D,0x1E12}, {0x331,0x1E0E}, {0x300,0xC8}, {0x301,0xC9}, {0x302,0xCA},
  {0x303,0x1EBC}, {0x304,0x112}, {0x306,0x114}, {0x307,0x116}, {0x308,0xCB}, {0x309,0x1EBA},
  {0x30C,0x11A}, {0x30F,0x204}, {0x311,0x206}, {0x323,0x1EB8}, {0x327,0x228}, {0x328,0x118},
  {0x32D,0x1E18}, {0x330,0x1E1A}, {0x307,0x1E1E}, {0x301,0x1F4}, {0x302,0x11C}, {0x304,0x1E20},
  {0x306,0x11E}, {0x307,0x120}, {0x30C,0x1E6}, {0x327,0x122}, {0x302,0x124}, {0x307,0x1E22},
  {0x308,0x1E26}, {0x30C,0x21E}, {0x323,0x1E24}, {0x327,0x1E28}, {0x32E,0x1E2A}, {0x300,0xCC},
  {0x301,0xCD}, {0x302,0xCE}, {0x303,0x128}, {0x304,0x12A}, {0x306,0x12C}, {0x307,0x130},
  {0x308,0xCF}, {0x309,0x1EC8}, {0x30C,0x1CF}, {0x30F,0x208}, {0x311,0x20A}, {0x323,0x1ECA},
  {0x328,0x12E}, {0x330,0x1E2C}, {0x302,0x134}, {0x301,0x1E30}, {0x30C,0x1E8}, {0x323,0x1E32},
  {0x327,0x136}, {0x331,0x1E34}, {0x301,0x139}, {0x30C,0x13D}, {0x323,0x1E36}, {0x327,0x13B},
  {0x32D,0x1E3C}, {0x331,0x1E3A}, {0x301,0x1E3E}, {0x307,0x1E40}, {0x323,0x1E42}, {0x300,0x1F8},
  {0x301,0x143}, {0x303,0xD1}, {0x307,0x1E44}, {0x30C,0x147}, {0x323,0x1E46}, {0x327,0x145},
  {0x32D,0x1E4A}, {0x331,0x1E48}, {0x300,0xD2}, {0x301,0xD3}, {0x302,0xD4}, {0x303,0xD5},
  {0x304,0x14C}, {0x306,0x14E}, {0x307,0x22E}, {0x308,0xD6}, {0x309,0x1ECE}, {0x30B,0x150},
  {0x30C,0x1D1}, {0x30F,0x20C}, {0x311,0x20E}, {0x31B,0x1A0}, {0x323,0x1ECC}, {0x328,0x1EA},
  {0x301,0x1E54}, {0x307,0x1E56}, {0x301,0x154}, {0x307,0x1E58}, {0x30C,0x158}, {0x30F,0x210},
  {0x311,0x212}, {0x323,0x1E5A}, {0x327,0x156}, {0x331,0x1E5E}, {0x301,0x15A}, {0x302,0x15C},
  {0x307,0x1E60}, {0x30C,0x160}, {0x323,0x1E62}, {0x326,0x218}, {0x327,0x15E}, {0x307,0x1E6A},
  {0x30C,0x164}, {0x323,0x1E6C}, {0x326,0x21A}, {0x327,0x162}, {0x32D,0x1E70}, {0x331,0x1E6E},
  {0x300,0xD9}, {0x301,0xDA}, {0x302,0xDB}, {0x303,0x168}, {0x304,0x16A}, {0x306,0x16C},
  {0x308,0xDC}, {0x309,0x1EE6}, {0x30A,0x16E}, {0x30B,0x170}, {0x30C,0x1D3}, {0x30F,0x214},
  {0x311,0x216}, {0x31B,0x1AF}, {0x323,0x1EE4}, {0x324,0x1E72}, {0x328,0x172}, {0x32D,0x1E76},
  {0x330,0x1E74}, {0x303,0x1E7C}, {0x323,0x1E7E}, {0x300,0x1E80}, {0x301,0x1E82}, {0x302,0x174},
  {0x307,0x1E86}, {0x308,0x1E84}, {0x323,0x1E88}, {0x307,0x1E8A}, {0x308,0x1E8C}, {0x300,0x1EF2},
  {0x301,0xDD}, {0x302,0x176}, {0x303,0x1EF8}, {0x304,0x232}, {0x307,0x1E8E}, {0x308,0x178},
  {0x309,0x1EF6}, {0x323,0x1EF4}, {0x301,0x179}, {0x302,0x1E90}, {0x307,0x17B}, {0x30C,0x17D},
  {0x323,0x1E92}, {0x331,0x1E94}, {0x300,0xE0}, {0x301,0xE1}, {0x302,0xE2}, {0x303,0xE3},
  {0x304,0x101}, {0x306,0x103}, {0x307,0x227}, {0x308,0xE4}, {0x309,0x1EA3}, {0x30A,0xE5},
  {0x30C,0x1CE}, {0x30F,0x201}, {0x311,0x203}, {0x323,0x1EA1}, {0x325,0x1E01}, {0x328,0x105},
  {0x307,0x1E03}, {0x323,0x1E05}, {0x331,0x1E07}, {0x301,0x107}, {0x302,0x109}, {0x307,0x10B},
  {0x30C,0x10D}, {0x327,0xE7}, {0x307,0x1E0B}, {0x30C,0x10F}, {0x323,0x1E0D}, {0x327,0x1E11},
  {0x32D,0x1E13}, {0x331,0x1E0F}, {0x300,0xE8}, {0x301,0xE9}, {0x302,0xEA}, {0x303,0x1EBD},
  {0x304,0x113}, {0x306,0x115}, {0x307,0x117}, {0x308,0xEB}, {0x309,0x1EBB}, {0x30C,0x11B},
  {0x30F,0x205}, {0x311,0x207}, {0x323,0x1EB9}, {0x327,0x229}, {0x328,0x119}, {0x32D,0x1E19},
  {0x330,0x1E1B}, {0x307,0x1E1F}, {0x301,0x1F5}, {0x302,0x11D}, {0x304,0x1E21}, {0x306,0x11F},
  {0x307,0x121}, {0x30C,0x1E7}, {0x327,0x123}, {0x302,0x125}, {0x307,0x1E23}, {0x308,0x1E27},
  {0x30C,0x21F}, {0x323,0x1E25}, {0x327,0x1E29}, {0x32E,0x1E2B}, {0x331,0x1E96}, {0x300,0xEC},
  {0x301,0xED}, {0x302,0xEE}, {0x303,0x129}, {0x304,0x12B}, {0x306,0x12D}, {0x308,0xEF},
  {0x309,0x1EC9}, {0x30C,0x1D0}, {0x30F,0x209}, {0x311,0x20B}, {0x323,0x1ECB}, {0x328,0x12F},
  {0x330,0x1E2D}, {0x302,0x135}, {0x30C,0x1F0}, {0x301,0x1E31}, {0x30C,0x1E9}, {0x323,0x1E33},
  {0x327,0x137}, {0x331,0x1E35}, {0x301,0x13A}, {0x30C,0x13E}, {0x323,0x1E37}, {0x327,0x13C},
  {0x32D,0x1E3D}, {0x331,0x1E3B}, {0x301,0x1E3F}, {0x307,0x1E41}, {0x323,0x1E43}, {0x300,0x1F9},
  {0x301,0x144}, {0x303,0xF1}, {0x307,0x1E45}, {0x30C,0x148}, {0x323,0x1E47}, {0x327,0x146},
  {0x32D,0x1E4B}, {0x331,0x1E49}, {0x300,0xF2}, {0x301,0xF3}, {0x302,0xF4}, {0x303,0xF5},
  {0x304,0x14D}, {0x306,0x14F}, {0x307,0x22F}, {0x308,0xF6}, {0x309,0x1ECF}, {0x30B,0x151},
  {0x30C,0x1D2}, {0x30F,0x20D}, {0x311,0x20F}, {0x31B,0x1A1}, {0x323,0x1ECD}, {0x328,0x1EB},
  {0x301,0x1E55}, {0x307,0x1E57}, {0x301,0x155}, {0x307,0x1E59}, {0x30C,0x159}, {0x30F,0x211},
  {0x311,0x213}, {0x323,0x1E5B}, {0x327,0x157}, {0x331,0x1E5F}, {0x301,0x15B}, {0x302,0x15D},
  {0x307,0x1E61}, {0x30C,0x161}, {0x323,0x1E63}, {0x326,0x219}, {0x327,0x15F}, {0x307,0x1E6B},
  {0x308,0x1E97}, {0x30C,0x165}, {0x323,0x1E6D}, {0x326,0x21B}, {0x327,0x163}, {0x32D,0x1E71},
  {0x331,0x1E6F}, {0x300,0xF9}, {0x301,0xFA}, {0x302,0xFB}, {0x303,0x169}, {0x304,0x16B},
  {0x306,0x16D}, {0x308,0xFC}, {0x309,0x1EE7}, {0x30A,0x16F}, {0x30B,0x171}, {0x30C,0x1D4},
  {0x30F,0x215}, {0x311,0x217}, {0x31B,0x1B0}, {0x323,0x1EE5}, {0x324,0x1E73}, {0x328,0x173},
  {0x32D,0x1E77}, {0x330,0x1E75}, {0x303,0x1E7D}, {0x323,0x1E7F}, {0x300,0x1E81}, {0x301,0x1E83},
  {0x302,0x175}, {0x307,0x1E87}, {0x308,0x1E85}, {0x30A,0x1E98}, {0x323,0x1E89}, {0x307,0x1E8B},
  {0x308,0x1E8D}, {0x300,0x1EF3}, {0x301,0xFD}, {0x302,0x177}, {0x303,0x1EF9}, {0x304,0x233},
  {0x307,0x1E8F}, {0x308,0xFF}, {0x309,0x1EF7}, {0x30A,0x1E99}, {0x323,0x1EF5}, {0x301,0x17A},
  {0x302,0x1E91}, {0x307,0x17C}, {0x30C,0x17E}, {0x323,0x1E93}, {0x331,0x1E95}, {0x300,0x1FED},
  {0x301,0x385}, {0x342,0x1FC1}, {0x300,0x1EA6}, {0x301,0x1EA4}, {0x303,0x1EAA}, {0x309,0x1EA8},
  {0x304,0x1DE}, {0x301,0x1FA}, {0x301,0x1FC}, {0x304,0x1E2}, {0x301,0x1E08}, {0x300,0x1EC0},
  {0x301,0x1EBE}, {0x303,0x1EC4}, {0x309,0x1EC2}, {0x301,0x1E2E}, {0x300,0x1ED2}, {0x301,0x1ED0},
  {0x303,0x1ED6}, {0x309,0x1ED4}, {0x301,0x1E4C}, {0x304,0x22C}, {0x308,0x1E4E}, {0x304,0x22A},
  {0x301,0x1FE}, {0x300,0x1DB}, {0x301,0x1D7}, {0x304,0x1D5}, {0x30C,0x1D9}, {0x300,0x1EA7},
  {0x301,0x1EA5}, {0x303,0x1EAB}, {0x309,0x1EA9}, {0x304,0x1DF}, {0x301,0x1FB}, {0x301,0x1FD},
  {0x304,0x1E3}, {0x301,0x1E09}, {0x300,0x1EC1}, {0x301,0x1EBF}, {0x303,0x1EC5}, {0x309,0x1EC3},
  {0x301,0x1E2F}, {0x300,0x1ED3}, {0x301,0x1ED1}, {0x303,0x1ED7}, {0x309,0x1ED5}, {0x301,0x1E4D},
  {0x304,0x22D}, {0x308,0x1E4F}, {0x304,0x22B}, {0x301,0x1FF}, {0x300,0x1DC}, {0x301,0x1D8},
  {0x304,0x1D6}, {0x30C,0x1DA}, {0x300,0x1EB0}, {0x301,0x1EAE}, {0x303,0x1EB4}, {0x309,0x1EB2},
  {0x300,0x1EB1}, {0x301,0x1EAF}, {0x303,0x1EB5}, {0x309,0x1EB3}, {0x300,0x1E14}, {0x301,0x1E16},
  {0x300,0x1E15}, {0x301,0x1E17}, {0x300,0x1E50}, {0x301,0x1E52}, {0x300,0x1E51}, {0x301,0x1E53},
  {0x307,0x1E64}, {0x307,0x1E65}, {0x307,0x1E66}, {0x307,0x1E67}, {0x301,0x1E78}, {0x301,0x1E79},
  {0x308,0x1E7A}, {0x308,0x1E7B}, {0x307,0x1E9B}, {0x300,0x1EDC}, {0x301,0x1EDA}, {0x303,0x1EE0},
  {0x309,0x1EDE}, {0x323,0x1EE2}, {0x300,0x1EDD}, {0x301,0x1EDB}, {0x303,0x1EE1}, {0x309,0x1EDF},
  {0x323,0x1EE3}, {0x300,0x1EEA}, {0x301,0x1EE8}, {0x303,0x1EEE}, {0x309,0x1EEC}, {0x323,0x1EF0},
  {0x300,0x1EEB}, {0x301,0x1EE9}, {0x303,0x1EEF}, {0x309,0x1EED}, {0x323,0x1EF1}, {0x30C,0x1EE},
  {0x304,0x1EC}, {0x304,0x1ED}, {0x304,0x1E0}, {0x304,0x1E1}, {0x306,0x1E1C}, {0x306,0x1E1D},
  {0x304,0x230}, {0x304,0x231}, {0x30C,0x1EF}, {0x300,0x1FBA}, {0x301,0x386}, {0x304,0x1FB9},
  {0x306,0x1FB8}, {0x313,0x1F08}, {0x314,0x1F09}, {0x345,0x1FBC}, {0x300,0x1FC8}, {0x301,0x388},
  {0x313,0x1F18}, {0x314,0x1F19}, {0x300,0x1FCA}, {0x301,0x389}, {0x313,0x1F28}, {0x314,0x1F29},
  {0x345,0x1FCC}, {0x300,0x1FDA}, {0x301,0x38A}, {0x304,0x1FD9}, {0x306,0x1FD8}, {0x308,0x3AA},
  {0x313,0x1F38}, {0x314,0x1F39}, {0x300,0x1FF8}, {0x301,0x38C}, {0x313,0x1F48}, {0x314,0x1F49},
  {0x314,0x1FEC}, {0x300,0x1FEA}, {0x301,0x38E}, {0x304,0x1FE9}, {0x306,0x1FE8}, {0x308,0x3AB},
  {0x314,0x1F59}, {0x300,0x1FFA}, {0x301,0x38F}, {0x313,0x1F68}, {0x314,0x1F69}, {0x345,0x1FFC},
  {0x345,0x1FB4}, {0x345,0x1FC4}, {0x300,0x1F70}, {0x301,0x3AC}, {0x304,0x1FB1}, {0x306,0x1FB0},
  {0x313,0x1F00}, {0x314,0x1F01}, {0x342,0x1FB6}, {0x345,0x1FB3}, {0x300,0x1F72}, {0x301,0x3AD},
  {0x313,0x1F10}, {0x314,0x1F11}, {0x300,0x1F74}, {0x301,0x3AE}, {0x313,0x1F20}, {0x314,0x1F21},
  {0x342,0x1FC6}, {0x345,0x1FC3}, {0x300,0x1F76}, {0x301,0x3AF}, {0x304,0x1FD1}, {0x306,0x1FD0},
  {0x308,0x3CA}, {0x313,0x1F30}, {0x314,0x1F31}, {0x342,0x1FD6}, {0x300,0x1F78}, {0x301,0x3CC},
  {0x313,0x1F40}, {0x314,0x1F41}, {0x313,0x1FE4}, {0x314,0x1FE5}, {0x300,0x1F7A}, {0x301,0x3CD},
  {0x304,0x1FE1}, {0x306,0x1FE0}, {0x308,0x3CB}, {0x313,0x1F50}, {0x314,0x1F51}, {0x342,0x1FE6},
  {0x300,0x1F7C}, {0x301,0x3CE}, {0x313,0x1F60}, {0x314,0x1F61}, {0x342,0x1FF6}, {0x345,0x1FF3},
  {0x300,0x1FD2}, {0x301,0x390}, {0x342,0x1FD7}, {0x300,0x1FE2}, {0x301,0x3B0}, {0x342,0x1FE7},
  {0x345,0x1FF4}, {0x301,0x3D3}, {0x308,0x3D4}, {0x308,0x407}, {0x306,0x4D0}, {0x308,0x4D2},
  {0x301,0x403}, {0x300,0x400}, {0x306,0x4D6}, {0x308,0x401}, {0x306,0x4C1}, {0x308,0x4DC},
  {0x308,0x4DE}, {0x300,0x40D}, {0x304,0x4E2}, {0x306,0x419}, {0x308,0x4E4}, {0x301,0x40C},
  {0x308,0x4E6}, {0x304,0x4EE}, {0x306,0x40E}, {0x308,0x4F0}, {0x30B,0x4F2}, {0x308,0x4F4},
  {0x308,0x4F8}, {0x308,0x4EC}, {0x306,0x4D1}, {0x308,0x4D3}, {0x301,0x453}, {0x300,0x450},
  {0x306,0x4D7}, {0x308,0x451}, {0x306,0x4C2}, {0x308,0x4DD}, {0x308,0x4DF}, {0x300,0x45D},
  {0x304,0x4E3}, {0x306,0x439}, {0x308,0x4E5}, {0x301,0x45C}, {0x308,0x4E7}, {0x304,0x4EF},
  {0x306,0x45E}, {0x308,0x4F1}, {0x30B,0x4F3}, {0x308,0x4F5}, {0x308,0x4F9}, {0x308,0x4ED},
  {0x308,0x457}, {0x30F,0x476}, {0x30F,0x477}, {0x308,0x4DA}, {0x308,0x4DB}, {0x308,0x4EA},
  {0x308,0x4EB}, {0x653,0x622}, {0x654,0x623}, {0x655,0x625}, {0x654,0x624}, {0x654,0x626},
  {0x654,0x6C2}, {0x654,0x6D3}, {0x654,0x6C0}, {0x93C,0x929}, {0x93C,0x931}, {0x93C,0x934},
  {0x9BE,0x9CB}, {0x9D7,0x9CC}, {0xB3E,0xB4B}, {0xB56,0xB48}, {0xB57,0xB4C}, {0xBD7,0xB94},
  {0xBBE,0xBCA}, {0xBD7,0xBCC}, {0xBBE,0xBCB}, {0xC56,0xC48}, {0xCD5,0xCC0}, {0xCC2,0xCCA},
  {0xCD5,0xCC7}, {0xCD6,0xCC8}, {0xCD5,0xCCB}, {0xD3E,0xD4A}, {0xD57,0xD4C}, {0xD3E,0xD4B},
  {0xDCA,0xDDA}, {0xDCF,0xDDC}, {0xDDF,0xDDE}, {0xDCA,0xDDD}, {0x102E,0x1026}, {0x1B35,0x1B06},
  {0x1B35,0x1B08}, {0x1B35,0x1B0A}, {0x1B35,0x1B0C}, {0x1B35,0x1B0E}, {0x1B35,0x1B12},
  {0x1B35,0x1B3B}, {0x1B35,0x1B3D}, {0x1B35,0x1B40}, {0x1B35,0x1B41}, {0x1B35,0x1B43},
  {0x304,0x1E38}, {0x304,0x1E39}, {0x304,0x1E5C}, {0x304,0x1E5D}, {0x307,0x1E68}, {0x307,0x1E69},
  {0x302,0x1EAC}, {0x306,0x1EB6}, {0x302,0x1EAD}, {0x306,0x1EB7}, {0x302,0x1EC6}, {0x302,0x1EC7},
  {0x302,0x1ED8}, {0x302,0x1ED9}, {0x300,0x1F02}, {0x301,0x1F04}, {0x342,0x1F06}, {0x345,0x1F80},
  {0x300,0x1F03}, {0x301,0x1F05}, {0x342,0x1F07}, {0x345,0x1F81}, {0x345,0x1F82}, {0x345,0x1F83},
  {0x345,0x1F84}, {0x345,0x1F85}, {0x345,0x1F86}, {0x345,0x1F87}, {0x300,0x1F0A}, {0x301,0x1F0C},
  {0x342,0x1F0E}, {0x345,0x1F88}, {0x300,0x1F0B}, {0x301,0x1F0D}, {0x342,0x1F0F}, {0x345,0x1F89},
  {0x345,0x1F8A}, {0x345,0x1F8B}, {0x345,0x1F8C}, {0x345,0x1F8D}, {0x345,0x1F8E}, {0x345,0x1F8F},
  {0x300,0x1F12}, {0x301,0x1F14}, {0x300,0x1F13}, {0x301,0x1F15}, {0x300,0x1F1A}, {0x301,0x1F1C},
  {0x300,0x1F1B}, {0x301,0x1F1D}, {0x300,0x1F22}, {0x301,0x1F24}, {0x342,0x1F26}, {0x345,0x1F90},
  {0x300,0x1F23}, {0x301,0x1F25}, {0x342,0x1F27}, {0x345,0x1F91}, {0x345,0x1F92}, {0x345,0x1F93},
  {0x345,0x1F94}, {0x345,0x1F95}, {0x345,0x1F96}, {0x345,0x1F97}, {0x300,0x1F2A}, {0x301,0x1F2C},
  {0x342,0x1F2E}, {0x345,0x1F98}, {0x300,0x1F2B}, {0x301,0x1F2D}, {0x342,0x1F2F}, {0x345,0x1F99},
  {0x345,0x1F9A}, {0x345,0x1F9B}, {0x345,0x1F9C}, {0x345,0x1F9D}, {0x345,0x1F9E}, {0x345,0x1F9F},
  {0x300,0x1F32}, {0x301,0x1F34}, {0x342,0x1F36}, {0x300,0x1F33}, {0x301,0x1F35}, {0x342,0x1F37},
  {0x300,0x1F3A}, {0x301,0x1F3C}, {0x342,0x1F3E}, {0x300,0x1F3B}, {0x301,0x1F3D}, {0x342,0x1F3F},
  {0x300,0x1F42}, {0x301,0x1F44}, {0x300,0x1F43}, {0x301,0x1F45}, {0x300,0x1F4A}, {0x301,0x1F4C},
  {0x300,0x1F4B}, {0x301,0x1F4D}, {0x300,0x1F52}, {0x301,0x1F54}, {0x342,0x1F56}, {0x300,0x1F53},
  {0x301,0x1F55}, {0x342,0x1F57}, {0x300,0x1F5B}, {0x301,0x1F5D}, {0x342,0x1F5F}, {0x300,0x1F62},
  {0x301,0x1F64}, {0x342,0x1F66}, {0x345,0x1FA0}, {0x300,0x1F63}, {0x301,0x1F65}, {0x342,0x1F67},
  {0x345,0x1FA1}, {0x345,0x1FA2}, {0x345,0x1FA3}, {0x345,0x1FA4}, {0x345,0x1FA5}, {0x345,0x1FA6},
  {0x345,0x1FA7}, {0x300,0x1F6A}, {0x301,0x1F6C}, {0x342,0x1F6E}, {0x345,0x1FA8}, {0x300,0x1F6B},
  {0x301,0x1F6D}, {0x342,0x1F6F}, {0x345,0x1FA9}, {0x345,0x1FAA}, {0x345,0x1FAB}, {0x345,0x1FAC},
  {0x345,0x1FAD}, {0x345,0x1FAE}, {0x345,0x1FAF}, {0x345,0x1FB2}, {0x345,0x1FC2}, {0x345,0x1FF2},
  {0x345,0x1FB7}, {0x300,0x1FCD}, {0x301,0x1FCE}, {0x342,0x1FCF}, {0x345,0x1FC7}, {0x345,0x1FF7},
  {0x300,0x1FDD}, {0x301,0x1FDE}, {0x342,0x1FDF}, {0x338,0x219A}, {0x338,0x219B}, {0x338,0x21AE},
  {0x338,0x21CD}, {0x338,0x21CF}, {0x338,0x21CE}, {0x338,0x2204}, {0x338,0x2209}, {0x338,0x220C},
  {0x338,0x2224}, {0x338,0x2226}, {0x338,0x2241}, {0x338,0x2244}, {0x338,0x2247}, {0x338,0x2249},
  {0x338,0x226D}, {0x338,0x2262}, {0x338,0x2270}, {0x338,0x2271}, {0x338,0x2274}, {0x338,0x2275},
  {0x338,0x2278}, {0x338,0x2279}, {0x338,0x2280}, {0x338,0x2281}, {0x338,0x22E0}, {0x338,0x22E1},
  {0x338,0x2284}, {0x338,0x2285}, {0x338,0x2288}, {0x338,0x2289}, {0x338,0x22E2}, {0x338,0x22E3},
  {0x338,0x22AC}, {0x338,0x22AD}, {0x338,0x22AE}, {0x338,0x22AF}, {0x338,0x22EA}, {0x338,0x22EB},
  {0x338,0x22EC}, {0x338,0x22ED}, {0x3099,0x3094}, {0x3099,0x304C}, {0x3099,0x304E},
  {0x3099,0x3050}, {0x3099,0x3052}, {0x3099,0x3054}, {0x3099,0x3056}, {0x3099,0x3058},
  {0x3099,0x305A}, {0x3099,0x305C}, {0x3099,0x305E}, {0x3099,0x3060}, {0x3099,0x3062},
  {0x3099,0x3065}, {0x3099,0x3067}, {0x3099,0x3069}, {0x3099,0x3070}, {0x309A,0x3071},
  {0x3099,0x3073}, {0x309A,0x3074}, {0x3099,0x3076}, {0x309A,0x3077}, {0x3099,0x3079},
  {0x309A,0x307A}, {0x3099,0x307C}, {0x309A,0x307D}, {0x3099,0x309E}, {0x3099,0x30F4},
  {0x3099,0x30AC}, {0x3099,0x30AE}, {0x3099,0x30B0}, {0x3099,0x30B2}, {0x3099,0x30B4},
  {0x3099,0x30B6}, {0x3099,0x30B8}, {0x3099,0x30BA}, {0x3099,0x30BC}, {0x3099,0x30BE},
  {0x3099,0x30C0}, {0x3099,0x30C2}, {0x3099,0x30C5}, {0x3099,0x30C7}, {0x3099,0x30C9},
  {0x3099,0x30D0}, {0x309A,0x30D1}, {0x3099,0x30D3}, {0x309A,0x30D4}, {0x3099,0x30D6},
  {0x309A,0x30D7}, {0x3099,0x30D9}, {0x309A,0x30DA}, {0x3099,0x30DC}, {0x309A,0x30DD},
  {0x3099,0x30F7}, {0x3099,0x30F8}, {0x3099,0x30F9}, {0x3099,0x30FA}, {0x3099,0x30FE},
  {0x110BA,0x1109A}, {0x110BA,0x1109C}, {0x110BA,0x110AB}, {0x11127,0x1112E}, {0x11127,0x1112F},
  {0x1133E,0x1134B}, {0x11357,0x1134C}, {0x114B0,0x114BC}, {0x114BA,0x114BB}, {0x114BD,0x114BE},
  {0x115AF,0x115BA}, {0x115AF,0x115BB}, {0x11930,0x11938}
};


const std::uint16_t decomp_block[] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x2000, 0x2002, 0x2004, 0x2006, 0x2008, 0x200A, 0, 0x200C, 0x200E, 0x2010, 0x2012, 0x2014, 0x2016,
  0x2018, 0x201A, 0x201C, 0, 0x201E, 0x2020, 0x2022, 0x2024, 0x2026, 0x2028, 0, 0, 0x202A, 0x202C,
  0x202E, 0x2030, 0x2032, 0, 0, 0x2034, 0x2036, 0x2038, 0x203A, 0x203C, 0x203E, 0, 0x2040, 0x2042,
  0x2044, 0x2046, 0x2048, 0x204A, 0x204C, 0x204E, 0x2050, 0, 0x2052, 0x2054, 0x2056, 0x2058, 0x205A,
  0x205C, 0, 0, 0x205E, 0x2060, 0x2062, 0x2064, 0x2066, 0, 0x2068, 0x206A, 0x206C, 0x206E, 0x2070,
  0x2072, 0x2074, 0x2076, 0x2078, 0x207A, 0x207C, 0x207E, 0x2080, 0x2082, 0x2084, 0x2086, 0x2088, 0,
  0, 0x208A, 0x208C, 0x208E, 0x2090, 0x2092, 0x2094, 0x2096, 0x2098, 0x209A, 0x209C, 0x209E, 0x20A0,
  0x20A2, 0x20A4, 0x20A6, 0x20A8, 0x20AA, 0x20AC, 0x20AE, 0x20B0, 0, 0, 0x20B2, 0x20B4, 0x20B6,
  0x20B8, 0x20BA, 0x20BC, 0x20BE, 0x20C0, 0x20C2, 0, 0, 0, 0x20C4, 0x20C6, 0x20C8, 0x20CA, 0,
  0x20CC, 0x20CE, 0x20D0, 0x20D2, 0x20D4, 0x20D6, 0, 0, 0, 0, 0x20D8, 0x20DA, 0x20DC, 0x20DE,
  0x20E0, 0x20E2, 0, 0, 0, 0x20E4, 0x20E6, 0x20E8, 0x20EA, 0x20EC, 0x20EE, 0, 0, 0x20F0, 0x20F2,
  0x20F4, 0x20F6, 0x20F8, 0x20FA, 0x20FC, 0x20FE, 0x2100, 0x2102, 0x2104, 0x2106, 0x2108, 0x210A,
  0x210C, 0x210E, 0x2110, 0x2112, 0, 0, 0x2114, 0x2116, 0x2118, 0x211A, 0x211C, 0x211E, 0x2120,
  0x2122, 0x2124, 0x2126, 0x2128, 0x212A, 0x212C, 0x212E, 0x2130, 0x2132, 0x2134, 0x2136, 0x2138,
  0x213A, 0x213C, 0x213E, 0x2140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2142, 0x2144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2146,
  0x2148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x214A, 0x214C, 0x214E, 0x2150, 0x2152, 0x2154, 0x2156, 0x2158, 0x315A, 0x315D, 0x3160, 0x3163,
  0x3166, 0x3169, 0x316C, 0x316F, 0, 0x3172, 0x3175, 0x3178, 0x317B, 0x217E, 0x2180, 0, 0, 0x2182,
  0x2184, 0x2186, 0x2188, 0x218A, 0x218C, 0x318E, 0x3191, 0x2194, 0x2196, 0x2198, 0, 0, 0, 0x219A,
  0x219C, 0, 0, 0x219E, 0x21A0, 0x31A2, 0x31A5, 0x21A8, 0x21AA, 0x21AC, 0x21AE, 0x21B0, 0x21B2,
  0x21B4, 0x21B6, 0x21B8, 0x21BA, 0x21BC, 0x21BE, 0x21C0, 0x21C2, 0x21C4, 0x21C6, 0x21C8, 0x21CA,
  0x21CC, 0x21CE, 0x21D0, 0x21D2, 0x21D4, 0x21D6, 0x21D8, 0x21DA, 0x21DC, 0x21DE, 0x21E0, 0x21E2,
  0x21E4, 0x21E6, 0, 0, 0x21E8, 0x21EA, 0, 0, 0, 0, 0, 0, 0x2178, 0x217B, 0x21EC, 0x21EE, 0x31F0,
  0x31F3, 0x31F6, 0x31F9, 0x21FC, 0x21FE, 0x3200, 0x3203, 0x2206, 0x2208, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0x1001, 0x1003, 0, 0x120A, 0x2161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x120B, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0x120C, 0, 0, 0, 0, 0, 0, 0x220D, 0x220F, 0x1211, 0x2212, 0x2214, 0x2216,
  0, 0x2218, 0, 0x221A, 0x221C, 0x321E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0x2221, 0x2223, 0x2225, 0x2227, 0x2229, 0x222B, 0x322D, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x221E, 0x222D, 0x2230, 0x2232, 0x2234, 0, 0, 0,
  0, 0x2236, 0x2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x223A, 0x223C, 0, 0x223E, 0, 0, 0, 0x2240, 0,
  0, 0, 0, 0x2242, 0x2244, 0x2246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2248, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x224A, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x224C, 0x224E, 0, 0x2250, 0, 0, 0, 0x2252, 0, 0, 0, 0,
  0x2254, 0x2256, 0x2258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x225A, 0x225C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x225E, 0x2260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x2262, 0x2264, 0x2266, 0x2268, 0, 0, 0x226A, 0x226C, 0, 0, 0x226E, 0x2270, 0x2272, 0x2274,
  0x2276, 0x2278, 0, 0, 0x227A, 0x227C, 0x227E, 0x2280, 0x2282, 0x2284, 0, 0, 0x2286, 0x2288,
  0x228A, 0x228C, 0x228E, 0x2290, 0x2292, 0x2294, 0x2296, 0x2298, 0x229A, 0x229C, 0, 0, 0x229E,
  0x22A0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22A2, 0x22A4, 0x22A6, 0x22A8, 0x22AA, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22AC, 0, 0x22AE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0x22B0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22B2, 0, 0,
  0, 0, 0, 0, 0, 0x22B4, 0, 0, 0x22B6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22B8, 0x22BA, 0x22BC, 0x22BE, 0x22C0, 0x22C2,
  0x22C4, 0x22C6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22C8, 0x22CA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x22CC, 0x22CE, 0, 0x22D0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22D2,
  0, 0, 0x22D4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0x22D6, 0x22D8, 0x22DA, 0, 0, 0x22DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22DE, 0, 0,
  0x22E0, 0x22E2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22E4, 0x22E6, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22E8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x22EA, 0x22EC, 0x22EE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0x22F0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22F2,
  0, 0, 0, 0, 0, 0, 0x22F4, 0x22F6, 0, 0x22F8, 0x32FA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x22FD, 0x22FF, 0x2301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x2303, 0, 0x2305, 0x3307, 0x230A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x230C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x230E, 0, 0, 0,
  0, 0x2310, 0, 0, 0, 0, 0x2312, 0, 0, 0, 0, 0x2314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2316, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0x2318, 0, 0x231A, 0x231C, 0, 0x231E, 0, 0, 0, 0, 0, 0, 0, 0, 0x2320, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2324, 0, 0,
  0, 0, 0x2326, 0, 0, 0, 0, 0x2328, 0, 0, 0, 0, 0x232A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x232C,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x232E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2330, 0, 0x2332, 0, 0x2334, 0, 0x2336, 0, 0x2338, 0, 0, 0,
  0x233A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x233C, 0, 0x233E, 0, 0, 0x2340, 0x2342, 0, 0x2344, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2346, 0x2348, 0x234A, 0x234C,
  0x234E, 0x2350, 0x2352, 0x2354, 0x3356, 0x3359, 0x235C, 0x235E, 0x2360, 0x2362, 0x2364, 0x2366,
  0x2368, 0x236A, 0x236C, 0x236E, 0x3370, 0x3373, 0x3376, 0x3379, 0x237C, 0x237E, 0x2380, 0x2382,
  0x3384, 0x3387, 0x238A, 0x238C, 0x238E, 0x2390, 0x2392, 0x2394, 0x2396, 0x2398, 0x239A, 0x239C,
  0x239E, 0x23A0, 0x23A2, 0x23A4, 0x23A6, 0x23A8, 0x33AA, 0x33AD, 0x23B0, 0x23B2, 0x23B4, 0x23B6,
  0x23B8, 0x23BA, 0x23BC, 0x23BE, 0x33C0, 0x33C3, 0x23C6, 0x23C8, 0x23CA, 0x23CC, 0x23CE, 0x23D0,
  0x23D2, 0x23D4, 0x23D6, 0x23D8, 0x23DA, 0x23DC, 0x23DE, 0x23E0, 0x23E2, 0x23E4, 0x23E6, 0x23E8,
  0x33EA, 0x33ED, 0x33F0, 0x33F3, 0x33F6, 0x33F9, 0x33FC, 0x33FF, 0x2402, 0x2404, 0x2406, 0x2408,
  0x240A, 0x240C, 0x240E, 0x2410, 0x3412, 0x3415, 0x2418, 0x241A, 0x241C, 0x241E, 0x2420, 0x2422,
  0x3424, 0x3427, 0x342A, 0x342D, 0x3430, 0x3433, 0x2436, 0x2438, 0x243A, 0x243C, 0x243E, 0x2440,
  0x2442, 0x2444, 0x2446, 0x2448, 0x244A, 0x244C, 0x244E, 0x2450, 0x3452, 0x3455, 0x3458, 0x345B,
  0x245E, 0x2460, 0x2462, 0x2464, 0x2466, 0x2468, 0x246A, 0x246C, 0x246E, 0x2470, 0x2472, 0x2474,
  0x2476, 0x2478, 0x247A, 0x247C, 0x247E, 0x2480, 0x2482, 0x2484, 0x2486, 0x2488, 0x248A, 0x248C,
  0x248E, 0x2490, 0x2492, 0x2494, 0x2496, 0x2498, 0, 0x249A, 0, 0, 0, 0, 0x249C, 0x249E, 0x24A0,
  0x24A2, 0x34A4, 0x34A7, 0x34AA, 0x34AD, 0x34B0, 0x34B3, 0x34B6, 0x34B9, 0x34BC, 0x34BF, 0x34C2,
  0x34C5, 0x34C8, 0x34CB, 0x34CE, 0x34D1, 0x34D4, 0x34D7, 0x34DA, 0x34DD, 0x24E0, 0x24E2, 0x24E4,
  0x24E6, 0x24E8, 0x24EA, 0x34EC, 0x34EF, 0x34F2, 0x34F5, 0x34F8, 0x34FB, 0x34FE, 0x3501, 0x3504,
  0x3507, 0x250A, 0x250C, 0x250E, 0x2510, 0x2512, 0x2514, 0x2516, 0x2518, 0x351A, 0x351D, 0x3520,
  0x3523, 0x3526, 0x3529, 0x352C, 0x352F, 0x3532, 0x3535, 0x3538, 0x353B, 0x353E, 0x3541, 0x3544,
  0x3547, 0x354A, 0x354D, 0x3550, 0x3553, 0x2556, 0x2558, 0x255A, 0x255C, 0x355E, 0x3561, 0x3564,
  0x3567, 0x356A, 0x356D, 0x3570, 0x3573, 0x3576, 0x3579, 0x257C, 0x257E, 0x2580, 0x2582, 0x2584,
  0x2586, 0x2588, 0x258A, 0, 0, 0, 0, 0, 0, 0x258C, 0x258E, 0x3590, 0x3593, 0x3596, 0x3599, 0x359C,
  0x359F, 0x25A2, 0x25A4, 0x35A6, 0x35A9, 0x35AC, 0x35AF, 0x35B2, 0x35B5, 0x25B8, 0x25BA, 0x35BC,
  0x35BF, 0x35C2, 0x35C5, 0, 0, 0x25C8, 0x25CA, 0x35CC, 0x35CF, 0x35D2, 0x35D5, 0, 0, 0x25D8,
  0x25DA, 0x35DC, 0x35DF, 0x35E2, 0x35E5, 0x35E8, 0x35EB, 0x25EE, 0x25F0, 0x35F2, 0x35F5, 0x35F8,
  0x35FB, 0x35FE, 0x3601, 0x2604, 0x2606, 0x3608, 0x360B, 0x360E, 0x3611, 0x3614, 0x3617, 0x261A,
  0x261C, 0x361E, 0x3621, 0x3624, 0x3627, 0x362A, 0x362D, 0x2630, 0x2632, 0x3634, 0x3637, 0x363A,
  0x363D, 0, 0, 0x2640, 0x2642, 0x3644, 0x3647, 0x364A, 0x364D, 0, 0, 0x2650, 0x2652, 0x3654,
  0x3657, 0x365A, 0x365D, 0x3660, 0x3663, 0, 0x2666, 0, 0x3668, 0, 0x366B, 0, 0x366E, 0x2671,
  0x2673, 0x3675, 0x3678, 0x367B, 0x367E, 0x3681, 0x3684, 0x2687, 0x2689, 0x368B, 0x368E, 0x3691,
  0x3694, 0x3697, 0x369A, 0x269D, 0x2225, 0x269F, 0x2227, 0x26A1, 0x2229, 0x26A3, 0x222B, 0x26A5,
  0x2230, 0x26A7, 0x2232, 0x26A9, 0x2234, 0, 0, 0x36AB, 0x36AE, 0x46B1, 0x46B5, 0x46B9, 0x46BD,
  0x46C1, 0x46C5, 0x36C9, 0x36CC, 0x46CF, 0x46D3, 0x46D7, 0x46DB, 0x46DF, 0x46E3, 0x36E7, 0x36EA,
  0x46ED, 0x46F1, 0x46F5, 0x46F9, 0x46FD, 0x4701, 0x3705, 0x3708, 0x470B, 0x470F, 0x4713, 0x4717,
  0x471B, 0x471F, 0x3723, 0x3726, 0x4729, 0x472D, 0x4731, 0x4735, 0x4739, 0x473D, 0x3741, 0x3744,
  0x4747, 0x474B, 0x474F, 0x4753, 0x4757, 0x475B, 0x275F, 0x2761, 0x3763, 0x2766, 0x3768, 0, 0x276B,
  0x376D, 0x2770, 0x2772, 0x2774, 0x220F, 0x2776, 0, 0x121E, 0, 0, 0x2778, 0x377A, 0x277D, 0x377F,
  0, 0x2782, 0x3784, 0x2787, 0x2212, 0x2789, 0x2214, 0x278B, 0x278D, 0x278F, 0x2791, 0x2793, 0x2795,
  0x3797, 0x321E, 0, 0, 0x279A, 0x379C, 0x279F, 0x27A1, 0x27A3, 0x2216, 0, 0x27A5, 0x27A7, 0x27A9,
  0x27AB, 0x27AD, 0x37AF, 0x322D, 0x27B2, 0x27B4, 0x27B6, 0x37B8, 0x27BB, 0x27BD, 0x27BF, 0x221A,
  0x27C1, 0x27C3, 0x220D, 0x17C5, 0, 0, 0x37C6, 0x27C9, 0x37CB, 0, 0x27CE, 0x37D0, 0x27D3, 0x2218,
  0x27D5, 0x221C, 0x27D7, 0x17D9, 0, 0, 0x17DA, 0x17DB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x121C, 0, 0, 0, 0x10C8, 0x200A, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x27DC, 0x27DE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x27E0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x27E2, 0x27E4, 0x27E6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x27E8, 0, 0,
  0, 0, 0x27EA, 0, 0, 0x27EC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x27EE, 0, 0x27F0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x27F2, 0, 0, 0x27F4, 0, 0, 0x27F6, 0, 0x27F8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0x27FA, 0, 0x27FC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x27FE, 0x2800, 0x2802, 0x2804,
  0x2806, 0, 0, 0x2808, 0x280A, 0, 0, 0x280C, 0x280E, 0, 0, 0, 0, 0, 0, 0x2810, 0x2812, 0, 0,
  0x2814, 0x2816, 0, 0, 0x2818, 0x281A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x281C, 0x281E, 0x2820, 0x2822, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0x2824, 0x2826, 0x2828, 0x282A, 0, 0, 0, 0, 0, 0, 0x282C, 0x282E, 0x2830,
  0x2832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1834,
  0x1835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0x2838, 0, 0x283A, 0, 0x283C, 0, 0x283E, 0, 0x2840, 0, 0x2842, 0, 0x2844, 0, 0x2846, 0,
  0x2848, 0, 0x284A, 0, 0x284C, 0, 0x284E, 0, 0, 0x2850, 0, 0x2852, 0, 0x2854, 0, 0, 0, 0, 0, 0,
  0x2856, 0x2858, 0, 0x285A, 0x285C, 0, 0x285E, 0x2860, 0, 0x2862, 0x2864, 0, 0x2866, 0x2868, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x286A, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x286C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x286E, 0, 0x2870, 0, 0x2872, 0, 0x2874, 0, 0x2876,
  0, 0x2878, 0, 0x287A, 0, 0x287C, 0, 0x287E, 0, 0x2880, 0, 0x2882, 0, 0x2884, 0, 0, 0x2886, 0,
  0x2888, 0, 0x288A, 0, 0, 0, 0, 0, 0, 0x288C, 0x288E, 0, 0x2890, 0x2892, 0, 0x2894, 0x2896, 0,
  0x2898, 0x289A, 0, 0x289C, 0x289E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x28A0, 0, 0, 0x28A2, 0x28A4, 0x28A6, 0x28A8, 0, 0, 0, 0x28AA, 0, 0x18AC, 0x18AD, 0x18AE,
  0x18AF, 0x18B0, 0x18B1, 0x18B2, 0x18B3, 0x18B3, 0x18B4, 0x18B5, 0x18B6, 0x18B7, 0x18B8, 0x18B9,
  0x18BA, 0x18BB, 0x18BC, 0x18BD, 0x18BE, 0x18BF, 0x18C0, 0x18C1, 0x18C2, 0x18C3, 0x18C4, 0x18C5,
  0x18C6, 0x18C7, 0x18C8, 0x18C9, 0x18CA, 0x18CB, 0x18CC, 0x18CD, 0x18CE, 0x18CF, 0x18D0, 0x18D1,
  0x18D2, 0x18D3, 0x18D4, 0x18D5, 0x18D6, 0x18D7, 0x18D8, 0x18D9, 0x18DA, 0x18DB, 0x18DC, 0x18DD,
  0x18DE, 0x18DF, 0x18E0, 0x18E1, 0x18E2, 0x18E3, 0x18E4, 0x18E5, 0x18E6, 0x18E7, 0x18E8, 0x18E9,
  0x18EA, 0x18EB, 0x18EC, 0x18ED, 0x18EE, 0x18EF, 0x18F0, 0x18F1, 0x18F2, 0x18F3, 0x18F4, 0x18F5,
  0x18F6, 0x18F7, 0x18F8, 0x18F9, 0x18FA, 0x18FB, 0x18FC, 0x18FD, 0x18FE, 0x18FF, 0x1900, 0x1901,
  0x1902, 0x1903, 0x1904, 0x1905, 0x1906, 0x18BF, 0x1907, 0x1908, 0x1909, 0x190A, 0x190B, 0x190C,
  0x190D, 0x190E, 0x190F, 0x1910, 0x1911, 0x1912, 0x1913, 0x1914, 0x1915, 0x1916, 0x1917, 0x1918,
  0x1919, 0x191A, 0x191B, 0x191C, 0x191D, 0x191E, 0x191F, 0x1920, 0x1921, 0x1922, 0x1923, 0x1924,
  0x1925, 0x1926, 0x1927, 0x1928, 0x1929, 0x192A, 0x192B, 0x192C, 0x192D, 0x192E, 0x192F, 0x1930,
  0x1931, 0x1932, 0x1933, 0x1934, 0x1935, 0x1936, 0x1937, 0x1938, 0x1939, 0x193A, 0x193B, 0x193C,
  0x193D, 0x193E, 0x193F, 0x1940, 0x1941, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1948,
  0x1949, 0x194A, 0x1919, 0x194B, 0x194C, 0x194D, 0x194E, 0x194F, 0x1950, 0x1951, 0x1952, 0x1909,
  0x1953, 0x1954, 0x1955, 0x1956, 0x1957, 0x1958, 0x1959, 0x195A, 0x195B, 0x195C, 0x195D, 0x195E,
  0x195F, 0x1960, 0x1961, 0x1962, 0x1963, 0x1964, 0x1965, 0x1966, 0x18BF, 0x1967, 0x1968, 0x1969,
  0x196A, 0x196B, 0x196C, 0x196D, 0x196E, 0x196F, 0x1970, 0x1971, 0x1972, 0x1973, 0x1974, 0x1975,
  0x1976, 0x1977, 0x1978, 0x1979, 0x197A, 0x197B, 0x197C, 0x197D, 0x197E, 0x197F, 0x1980, 0x1981,
  0x190B, 0x1982, 0x1983, 0x1984, 0x1985, 0x1986, 0x1987, 0x1988, 0x1989, 0x198A, 0x198B, 0x198C,
  0x198D, 0x198E, 0x198F, 0x1990, 0x1991, 0x1992, 0x1993, 0x1994, 0x1995, 0x1996, 0x1997, 0x1998,
  0x1999, 0x199A, 0x199B, 0x199C, 0x199D, 0x199E, 0x199F, 0x19A0, 0x19A1, 0x19A2, 0x19A3, 0x19A4,
  0x19A5, 0x19A6, 0x19A7, 0x19A8, 0x19A9, 0x19AA, 0x19AB, 0x19AC, 0x19AD, 0x19AE, 0x19AF, 0x19B0,
  0x19B1, 0x19B2, 0x19B3, 0, 0, 0x19B4, 0, 0x19B5, 0, 0, 0x19B6, 0x19B7, 0x19B8, 0x19B9, 0x19BA,
  0x19BB, 0x19BC, 0x19BD, 0x19BE, 0x19BF, 0, 0x19C0, 0, 0x19C1, 0, 0, 0x19C2, 0x19C3, 0, 0, 0,
  0x19C4, 0x19C5, 0x19C6, 0x19C7, 0x19C8, 0x19C9, 0x19CA, 0x19CB, 0x19CC, 0x19CD, 0x19CE, 0x19CF,
  0x19D0, 0x19D1, 0x19D2, 0x19D3, 0x19D4, 0x19D5, 0x19D6, 0x19D7, 0x19D8, 0x19D9, 0x19DA, 0x19DB,
  0x19DC, 0x19DD, 0x19DE, 0x19DF, 0x19E0, 0x19E1, 0x19E2, 0x19E3, 0x19E4, 0x19E5, 0x19E6, 0x19E7,
  0x19E8, 0x19E9, 0x19EA, 0x19EB, 0x19EC, 0x19ED, 0x19EE, 0x19EF, 0x19F0, 0x1940, 0x19F1, 0x19F2,
  0x19F3, 0x19F4, 0x19F5, 0x19F6, 0x19F6, 0x19F7, 0x19F8, 0x19F9, 0x19FA, 0x19FB, 0x19FC, 0x19FD,
  0x19FE, 0x19C2, 0x19FF, 0x1A00, 0x1A01, 0x1A02, 0x1A03, 0x1A04, 0, 0, 0x1A05, 0x1A06, 0x1A07,
  0x1A08, 0x1A09, 0x1A0A, 0x1A0B, 0x1A0C, 0x19D0, 0x1A0D, 0x1A0E, 0x1A0F, 0x19B4, 0x1A10, 0x1A11,
  0x1A12, 0x1A13, 0x1A14, 0x1A15, 0x1A16, 0x1A17, 0x1A18, 0x1A19, 0x1A1A, 0x1A1B, 0x19D9, 0x1A1C,
  0x19DA, 0x1A1D, 0x1A1E, 0x1A1F, 0x1A20, 0x1A21, 0x19B5, 0x18D4, 0x1A22, 0x1A23, 0x1A24, 0x191A,
  0x1971, 0x1A25, 0x1A26, 0x19E1, 0x1A27, 0x19E2, 0x1A28, 0x1A29, 0x1A2A, 0x19B7, 0x1A2B, 0x1A2C,
  0x1A2D, 0x1A2E, 0x1A2F, 0x19B8, 0x1A30, 0x1A31, 0x1A32, 0x1A33, 0x1A34, 0x1A35, 0x19F0, 0x1A36,
  0x1A37, 0x1940, 0x1A38, 0x19F4, 0x1A39, 0x1A3A, 0x1A3B, 0x1A3C, 0x1A3D, 0x19F9, 0x1A3E, 0x19C1,
  0x1A3F, 0x19FA, 0x1907, 0x1A40, 0x19FB, 0x1A41, 0x19FD, 0x1A42, 0x1A43, 0x1A44, 0x1A45, 0x1A46,
  0x19FF, 0x19BD, 0x1A47, 0x1A00, 0x1A48, 0x1A01, 0x1A49, 0x18B3, 0x1A4A, 0x1A4B, 0x1A4C, 0x1A4D,
  0x1A4E, 0x1A4F, 0x1A50, 0x1A51, 0x1A52, 0x1A53, 0x1A54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2A55, 0, 0x2A57, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0x2A59, 0x2A5B, 0x3A5D, 0x3A60, 0x2A63, 0x2A65, 0x2A67, 0x2A69, 0x2A6B, 0x2A6D,
  0x2A6F, 0x2A71, 0x2A73, 0, 0x2A75, 0x2A77, 0x2A79, 0x2A7B, 0x2A7D, 0, 0x2A7F, 0, 0x2A81, 0x2A83,
  0, 0x2A85, 0x2A87, 0, 0x2A89, 0x2A8B, 0x2A8D, 0x2A5D, 0x2A8F, 0x2A91, 0x2A93, 0x2A95, 0x2A97, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0x2A99, 0, 0x2A9B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2A9D, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x2A9F, 0x2AA1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0x2AA3, 0x2AA5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2AA7, 0x2AA9, 0, 0x2AAB, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2AAD, 0x2AAF, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2AB1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2AB3, 0x2AB5,
  0x3AB7, 0x3ABA, 0x3ABD, 0x3AC0, 0x3AC3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0x2AC6, 0x2AC8, 0x3ACA, 0x3ACD, 0x3AD0, 0x3AD3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1AD6, 0x1AD7, 0x1AD8, 0x1AD9, 0x1ADA, 0x19CA, 0x1ADB,
  0x1ADC, 0x1ADD, 0x1ADE, 0x19CB, 0x1ADF, 0x1AE0, 0x1AE1, 0x19CC, 0x1AE2, 0x1AE3, 0x1AE4, 0x1AE5,
  0x1AE6, 0x1AE7, 0x1AE8, 0x1AE9, 0x1AEA, 0x1AEB, 0x1AEC, 0x1AED, 0x1A06, 0x1AEE, 0x1AEF, 0x1AF0,
  0x1AF1, 0x1AF2, 0x1AF3, 0x1AF4, 0x1AF5, 0x1AF6, 0x1A0B, 0x19CD, 0x19CE, 0x1A0C, 0x1AF7, 0x1AF8,
  0x190D, 0x1AF9, 0x19CF, 0x1AFA, 0x1AFB, 0x1AFC, 0x1AFD, 0x1AFD, 0x1AFD, 0x1AFE, 0x1AFF, 0x1B00,
  0x1B01, 0x1B02, 0x1B03, 0x1B04, 0x1B05, 0x1B06, 0x1B07, 0x1B08, 0x1B09, 0x1B0A, 0x1B0B, 0x1B0C,
  0x1B0D, 0x1B0E, 0x1B0F, 0x1B0F, 0x1A0E, 0x1B10, 0x1B11, 0x1B12, 0x1B13, 0x19D1, 0x1B14, 0x1B15,
  0x1B16, 0x19A6, 0x1B17, 0x1B18, 0x1B19, 0x1B1A, 0x1B1B, 0x1B1C, 0x1B1D, 0x1B1E, 0x1B1F, 0x1B20,
  0x1B21, 0x1B22, 0x1B23, 0x1B24, 0x1B25, 0x1B26, 0x1B27, 0x1B28, 0x1B29, 0x1B2A, 0x1B2B, 0x1B2C,
  0x1B2D, 0x1B2E, 0x1B2F, 0x1B30, 0x1B30, 0x1B31, 0x1B32, 0x1B33, 0x1909, 0x1B34, 0x1B35, 0x1B36,
  0x1B37, 0x1B38, 0x1B39, 0x1B3A, 0x1B3B, 0x19D6, 0x1B3C, 0x1B3D, 0x1B3E, 0x1B3F, 0x1B40, 0x1B41,
  0x1B42, 0x1B43, 0x1B44, 0x1B45, 0x1B46, 0x1B47, 0x1B48, 0x1B49, 0x1B4A, 0x1B4B, 0x1B4C, 0x1B4D,
  0x1B4E, 0x1B4F, 0x1B50, 0x18D3, 0x1B51, 0x1B52, 0x1B53, 0x1B53, 0x1B54, 0x1B55, 0x1B55, 0x1B56,
  0x1B57, 0x1B58, 0x1B59, 0x1B5A, 0x1B5B, 0x1B5C, 0x1B5D, 0x1B5E, 0x1B5F, 0x1B60, 0x1B61, 0x1B62,
  0x19D7, 0x1B63, 0x1B64, 0x1B65, 0x1B66, 0x1A1A, 0x1B66, 0x1B67, 0x19D9, 0x1B68, 0x1B69, 0x1B6A,
  0x1B6B, 0x19DA, 0x18B8, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73, 0x1B74,
  0x1B75, 0x1B76, 0x1B77, 0x1B78, 0x1B79, 0x1B7A, 0x1B7B, 0x1B7C, 0x1B7D, 0x1B7E, 0x1B7F, 0x1B80,
  0x1B81, 0x19DB, 0x1B82, 0x1B83, 0x1B84, 0x1B85, 0x1B86, 0x1B87, 0x19DD, 0x1B88, 0x1B89, 0x1B8A,
  0x1B8B, 0x1B8C, 0x1B8D, 0x1B8E, 0x1B8F, 0x18D4, 0x1A22, 0x1B90, 0x1B91, 0x1B92, 0x1B93, 0x1B94,
  0x1B95, 0x1B96, 0x1B97, 0x19DE, 0x1B98, 0x1B99, 0x1B9A, 0x1B9B, 0x1A4D, 0x1B9C, 0x1B9D, 0x1B9E,
  0x1B9F, 0x1BA0, 0x1BA1, 0x1BA2, 0x1BA3, 0x1BA4, 0x1BA5, 0x1BA6, 0x1BA7, 0x1BA8, 0x191A, 0x1BA9,
  0x1BAA, 0x1BAB, 0x1BAC, 0x1BAD, 0x1BAE, 0x1BAF, 0x1BB0, 0x1BB1, 0x1BB2, 0x1BB3, 0x19DF, 0x1971,
  0x1BB4, 0x1BB5, 0x1BB6, 0x1BB7, 0x1BB8, 0x1BB9, 0x1BBA, 0x1BBB, 0x1A26, 0x1BBC, 0x1BBD, 0x1BBE,
  0x1BBF, 0x1BC0, 0x1BC1, 0x1BC2, 0x1BC3, 0x1A27, 0x1BC4, 0x1BC5, 0x1BC6, 0x1BC7, 0x1BC8, 0x1BC9,
  0x1BCA, 0x1BCB, 0x1BCC, 0x1BCD, 0x1BCE, 0x1BCF, 0x1A29, 0x1BD0, 0x1BD1, 0x1BD2, 0x1BD3, 0x1BD4,
  0x1BD5, 0x1BD6, 0x1BD7, 0x1BD8, 0x1BD9, 0x1BDA, 0x1BDA, 0x1BDB, 0x1BDC, 0x1A2B, 0x1BDD, 0x1BDE,
  0x1BDF, 0x1BE0, 0x1BE1, 0x1BE2, 0x1BE3, 0x190C, 0x1BE4, 0x1BE5, 0x1BE6, 0x1BE7, 0x1BE8, 0x1BE9,
  0x1BEA, 0x1A31, 0x1BEB, 0x1BEC, 0x1BED, 0x1BEE, 0x1BEF, 0x1BF0, 0x1BF0, 0x1A32, 0x1A4F, 0x1BF1,
  0x1BF2, 0x1BF3, 0x1BF4, 0x1BF5, 0x18E6, 0x1A34, 0x1BF6, 0x1BF7, 0x19EA, 0x1BF8, 0x1BF9, 0x19BC,
  0x1BFA, 0x1BFB, 0x19EE, 0x1BFC, 0x1BFD, 0x1BFE, 0x1BFF, 0x1BFF, 0x1C00, 0x1C01, 0x1C02, 0x1C03,
  0x1C04, 0x1C05, 0x1C06, 0x1C07, 0x1C08, 0x1C09, 0x1C0A, 0x1C0B, 0x1C0C, 0x1C0D, 0x1C0E, 0x1C0F,
  0x1C10, 0x1C11, 0x1C12, 0x1C13, 0x1C14, 0x1C15, 0x1C16, 0x1C17, 0x1C18, 0x1C19, 0x1C1A, 0x19F4,
  0x1C1B, 0x1C1C, 0x1C1D, 0x1C1E, 0x1C1F, 0x1C20, 0x1C21, 0x1C22, 0x1C23, 0x1C24, 0x1C25, 0x1C26,
  0x1C27, 0x1C28, 0x1C29, 0x1C2A, 0x1B54, 0x1C2B, 0x1C2C, 0x1C2D, 0x1C2E, 0x1C2F, 0x1C30, 0x1C31,
  0x1C32, 0x1C33, 0x1C34, 0x1C35, 0x1C36, 0x191E, 0x1C37, 0x1C38, 0x1C39, 0x1C3A, 0x1C3B, 0x1C3C,
  0x19F7, 0x1C3D, 0x1C3E, 0x1C3F, 0x1C40, 0x1C41, 0x1C42, 0x1C43, 0x1C44, 0x1C45, 0x1C46, 0x1C47,
  0x1C48, 0x1C49, 0x1C4A, 0x1C4B, 0x1C4C, 0x1C4D, 0x1C4E, 0x1C4F, 0x1C50, 0x18E1, 0x1C51, 0x1C52,
  0x1C53, 0x1C54, 0x1C55, 0x1C56, 0x1A3B, 0x1C57, 0x1C58, 0x1C59, 0x1C5A, 0x1C5B, 0x1C5C, 0x1C5D,
  0x1C5E, 0x1C5F, 0x1C60, 0x1C61, 0x1C62, 0x1C63, 0x1C64, 0x1C65, 0x1C66, 0x1C67, 0x1C68, 0x1C69,
  0x1C6A, 0x1A40, 0x1A41, 0x1C6B, 0x1C6C, 0x1C6D, 0x1C6E, 0x1C6F, 0x1C70, 0x1C71, 0x1C72, 0x1C73,
  0x1C74, 0x1C75, 0x1C76, 0x1C77, 0x1A42, 0x1C78, 0x1C79, 0x1C7A, 0x1C7B, 0x1C7C, 0x1C7D, 0x1C7E,
  0x1C7F, 0x1C80, 0x1C81, 0x1C82, 0x1C83, 0x1C84, 0x1C85, 0x1C86, 0x1C87, 0x1C88, 0x1C89, 0x1C8A,
  0x1C8B, 0x1C8C, 0x1C8D, 0x1C8E, 0x1C8F, 0x1C90, 0x1C91, 0x1C92, 0x1C93, 0x1C94, 0x1C95, 0x1A48,
  0x1A48, 0x1C96, 0x1C97, 0x1C98, 0x1C99, 0x1C9A, 0x1C9B, 0x1C9C, 0x1C9D, 0x1C9E, 0x1C9F, 0x1A49,
  0x1CA0, 0x1CA1, 0x1CA2, 0x1CA3, 0x1CA4, 0x1CA5, 0x1CA6, 0x1CA7, 0x1CA8, 0x1CA9, 0x1CAA, 0x1CAB,
  0x1CAC, 0x1CAD, 0x1CAE, 0x1CAF, 0x1CB0, 0x1CB1, 0x1CB2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

const std::uint8_t decomp_block_index[] = {
  0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, 11, 0, 12, 0, 0, 0, 0, 13, 0, 0, 14, 0, 0, 0,
  0, 0, 0, 0, 0, 15, 16, 0, 17, 18, 19, 0, 0, 0, 20, 21, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 0, 0, 0,
  0, 27, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
  35, 36, 37, 38, 39, 40, 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 60,
  61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
  65, 0, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 73, 74,
  75, 76, 77, 78, 79, 80
};

const char32_t decomp_block_data[] = {
  0x41, 0x300, 0x41, 0x301, 0x41, 0x302, 0x41, 0x303, 0x41, 0x308, 0x41, 0x30A, 0x43, 0x327, 0x45,
  0x300, 0x45, 0x301, 0x45, 0x302, 0x45, 0x308, 0x49, 0x300, 0x49, 0x301, 0x49, 0x302, 0x49, 0x308,
  0x4E, 0x303, 0x4F, 0x300, 0x4F, 0x301, 0x4F, 0x302, 0x4F, 0x303, 0x4F, 0x308, 0x55, 0x300, 0x55,
  0x301, 0x55, 0x302, 0x55, 0x308, 0x59, 0x301, 0x61, 0x300, 0x61, 0x301, 0x61, 0x302, 0x61, 0x303,
  0x61, 0x308, 0x61, 0x30A, 0x63, 0x327, 0x65, 0x300, 0x65, 0x301, 0x65, 0x302, 0x65, 0x308, 0x69,
  0x300, 0x69, 0x301, 0x69, 0x302, 0x69, 0x308, 0x6E, 0x303, 0x6F, 0x300, 0x6F, 0x301, 0x6F, 0x302,
  0x6F, 0x303, 0x6F, 0x308, 0x75, 0x300, 0x75, 0x301, 0x75, 0x302, 0x75, 0x308, 0x79, 0x301, 0x79,
  0x308, 0x41, 0x304, 0x61, 0x304, 0x41, 0x306, 0x61, 0x306, 0x41, 0x328, 0x61, 0x328, 0x43, 0x301,
  0x63, 0x301, 0x43, 0x302, 0x63, 0x302, 0x43, 0x307, 0x63, 0x307, 0x43, 0x30C, 0x63, 0x30C, 0x44,
  0x30C, 0x64, 0x30C, 0x45, 0x304, 0x65, 0x304, 0x45, 0x306, 0x65, 0x306, 0x45, 0x307, 0x65, 0x307,
  0x45, 0x328, 0x65, 0x328, 0x45, 0x30C, 0x65, 0x30C, 0x47, 0x302, 0x67, 0x302, 0x47, 0x306, 0x67,
  0x306, 0x47, 0x307, 0x67, 0x307, 0x47, 0x327, 0x67, 0x327, 0x48, 0x302, 0x68, 0x302, 0x49, 0x303,
  0x69, 0x303, 0x49, 0x304, 0x69, 0x304, 0x49, 0x306, 0x69, 0x306, 0x49, 0x328, 0x69, 0x328, 0x49,
  0x307, 0x4A, 0x302, 0x6A, 0x302, 0x4B, 0x327, 0x6B, 0x327, 0x4C, 0x301, 0x6C, 0x301, 0x4C, 0x327,
  0x6C, 0x327, 0x4C, 0x30C, 0x6C, 0x30C, 0x4E, 0x301, 0x6E, 0x301, 0x4E, 0x327, 0x6E, 0x327, 0x4E,
  0x30C, 0x6E, 0x30C, 0x4F, 0x304, 0x6F, 0x304, 0x4F, 0x306, 0x6F, 0x306, 0x4F, 0x30B, 0x6F, 0x30B,
  0x52, 0x301, 0x72, 0x301, 0x52, 0x327, 0x72, 0x327, 0x52, 0x30C, 0x72, 0x30C, 0x53, 0x301, 0x73,
  0x301, 0x53, 0x302, 0x73, 0x302, 0x53, 0x327, 0x73, 0x327, 0x53, 0x30C, 0x73, 0x30C, 0x54, 0x327,
  0x74, 0x327, 0x54, 0x30C, 0x74, 0x30C, 0x55, 0x303, 0x75, 0x303, 0x55, 0x304, 0x75, 0x304, 0x55,
  0x306, 0x75, 0x306, 0x55, 0x30A, 0x75, 0x30A, 0x55, 0x30B, 0x75, 0x30B, 0x55, 0x328, 0x75, 0x328,
  0x57, 0x302, 0x77, 0x302, 0x59, 0x302, 0x79, 0x302, 0x59, 0x308, 0x5A, 0x301, 0x7A, 0x301, 0x5A,
  0x307, 0x7A, 0x307, 0x5A, 0x30C, 0x7A, 0x30C, 0x4F, 0x31B, 0x6F, 0x31B, 0x55, 0x31B, 0x75, 0x31B,
  0x41, 0x30C, 0x61, 0x30C, 0x49, 0x30C, 0x69, 0x30C, 0x4F, 0x30C, 0x6F, 0x30C, 0x55, 0x30C, 0x75,
  0x30C, 0x55, 0x308, 0x304, 0x75, 0x308, 0x304, 0x55, 0x308, 0x301, 0x75, 0x308, 0x301, 0x55,
  0x308, 0x30C, 0x75, 0x308, 0x30C, 0x55, 0x308, 0x300, 0x75, 0x308, 0x300, 0x41, 0x308, 0x304,
  0x61, 0x308, 0x304, 0x41, 0x307, 0x304, 0x61, 0x307, 0x304, 0xC6, 0x304, 0xE6, 0x304, 0x47, 0x30C,
  0x67, 0x30C, 0x4B, 0x30C, 0x6B, 0x30C, 0x4F, 0x328, 0x6F, 0x328, 0x4F, 0x328, 0x304, 0x6F, 0x328,
  0x304, 0x1B7, 0x30C, 0x292, 0x30C, 0x6A, 0x30C, 0x47, 0x301, 0x67, 0x301, 0x4E, 0x300, 0x6E,
  0x300, 0x41, 0x30A, 0x301, 0x61, 0x30A, 0x301, 0xC6, 0x301, 0xE6, 0x301, 0xD8, 0x301, 0xF8, 0x301,
  0x41, 0x30F, 0x61, 0x30F, 0x41, 0x311, 0x61, 0x311, 0x45, 0x30F, 0x65, 0x30F, 0x45, 0x311, 0x65,
  0x311, 0x49, 0x30F, 0x69, 0x30F, 0x49, 0x311, 0x69, 0x311, 0x4F, 0x30F, 0x6F, 0x30F, 0x4F, 0x311,
  0x6F, 0x311, 0x52, 0x30F, 0x72, 0x30F, 0x52, 0x311, 0x72, 0x311, 0x55, 0x30F, 0x75, 0x30F, 0x55,
  0x311, 0x75, 0x311, 0x53, 0x326, 0x73, 0x326, 0x54, 0x326, 0x74, 0x326, 0x48, 0x30C, 0x68, 0x30C,
  0x45, 0x327, 0x65, 0x327, 0x4F, 0x308, 0x304, 0x6F, 0x308, 0x304, 0x4F, 0x303, 0x304, 0x6F, 0x303,
  0x304, 0x4F, 0x307, 0x6F, 0x307, 0x4F, 0x307, 0x304, 0x6F, 0x307, 0x304, 0x59, 0x304, 0x79, 0x304,
  0x313, 0x2B9, 0x3B, 0xA8, 0x301, 0x391, 0x301, 0xB7, 0x395, 0x301, 0x397, 0x301, 0x399, 0x301,
  0x39F, 0x301, 0x3A5, 0x301, 0x3A9, 0x301, 0x3B9, 0x308, 0x301, 0x399, 0x308, 0x3A5, 0x308, 0x3B1,
  0x301, 0x3B5, 0x301, 0x3B7, 0x301, 0x3B9, 0x301, 0x3C5, 0x308, 0x301, 0x3BF, 0x301, 0x3C5, 0x301,
  0x3C9, 0x301, 0x3D2, 0x301, 0x3D2, 0x308, 0x415, 0x300, 0x415, 0x308, 0x413, 0x301, 0x406, 0x308,
  0x41A, 0x301, 0x418, 0x300, 0x423, 0x306, 0x418, 0x306, 0x438, 0x306, 0x435, 0x300, 0x435, 0x308,
  0x433, 0x301, 0x456, 0x308, 0x43A, 0x301, 0x438, 0x300, 0x443, 0x306, 0x474, 0x30F, 0x475, 0x30F,
  0x416, 0x306, 0x436, 0x306, 0x410, 0x306, 0x430, 0x306, 0x410, 0x308, 0x430, 0x308, 0x415, 0x306,
  0x435, 0x306, 0x4D8, 0x308, 0x4D9, 0x308, 0x416, 0x308, 0x436, 0x308, 0x417, 0x308, 0x437, 0x308,
  0x418, 0x304, 0x438, 0x304, 0x418, 0x308, 0x438, 0x308, 0x41E, 0x308, 0x43E, 0x308, 0x4E8, 0x308,
  0x4E9, 0x308, 0x42D, 0x308, 0x44D, 0x308, 0x423, 0x304, 0x443, 0x304, 0x423, 0x308, 0x443, 0x308,
  0x423, 0x30B, 0x443, 0x30B, 0x427, 0x308, 0x447, 0x308, 0x42B, 0x308, 0x44B, 0x308, 0x627, 0x653,
  0x627, 0x654, 0x648, 0x654, 0x627, 0x655, 0x64A, 0x654, 0x6D5, 0x654, 0x6C1, 0x654, 0x6D2, 0x654,
  0x928, 0x93C, 0x930, 0x93C, 0x933, 0x93C, 0x915, 0x93C, 0x916, 0x93C, 0x917, 0x93C, 0x91C, 0x93C,
  0x921, 0x93C, 0x922, 0x93C, 0x92B, 0x93C, 0x92F, 0x93C, 0x9C7, 0x9BE, 0x9C7, 0x9D7, 0x9A1, 0x9BC,
  0x9A2, 0x9BC, 0x9AF, 0x9BC, 0xA32, 0xA3C, 0xA38, 0xA3C, 0xA16, 0xA3C, 0xA17, 0xA3C, 0xA1C, 0xA3C,
  0xA2B, 0xA3C, 0xB47, 0xB56, 0xB47, 0xB3E, 0xB47, 0xB57, 0xB21, 0xB3C, 0xB22, 0xB3C, 0xB92, 0xBD7,
  0xBC6, 0xBBE, 0xBC7, 0xBBE, 0xBC6, 0xBD7, 0xC46, 0xC56, 0xCBF, 0xCD5, 0xCC6, 0xCD5, 0xCC6, 0xCD6,
  0xCC6, 0xCC2, 0xCC6, 0xCC2, 0xCD5, 0xD46, 0xD3E, 0xD47, 0xD3E, 0xD46, 0xD57, 0xDD9, 0xDCA, 0xDD9,
  0xDCF, 0xDD9, 0xDCF, 0xDCA, 0xDD9, 0xDDF, 0xF42, 0xFB7, 0xF4C, 0xFB7, 0xF51, 0xFB7, 0xF56, 0xFB7,
  0xF5B, 0xFB7, 0xF40, 0xFB5, 0xF71, 0xF72, 0xF71, 0xF74, 0xFB2, 0xF80, 0xFB3, 0xF80, 0xF71, 0xF80,
  0xF92, 0xFB7, 0xF9C, 0xFB7, 0xFA1, 0xFB7, 0xFA6, 0xFB7, 0xFAB, 0xFB7, 0xF90, 0xFB5, 0x1025,
  0x102E, 0x1B05, 0x1B35, 0x1B07, 0x1B35, 0x1B09, 0x1B35, 0x1B0B, 0x1B35, 0x1B0D, 0x1B35, 0x1B11,
  0x1B35, 0x1B3A, 0x1B35, 0x1B3C, 0x1B35, 0x1B3E, 0x1B35, 0x1B3F, 0x1B35, 0x1B42, 0x1B35, 0x41,
  0x325, 0x61, 0x325, 0x42, 0x307, 0x62, 0x307, 0x42, 0x323, 0x62, 0x323, 0x42, 0x331, 0x62, 0x331,
  0x43, 0x327, 0x301, 0x63, 0x327, 0x301, 0x44, 0x307, 0x64, 0x307, 0x44, 0x323, 0x64, 0x323, 0x44,
  0x331, 0x64, 0x331, 0x44, 0x327, 0x64, 0x327, 0x44, 0x32D, 0x64, 0x32D, 0x45, 0x304, 0x300, 0x65,
  0x304, 0x300, 0x45, 0x304, 0x301, 0x65, 0x304, 0x301, 0x45, 0x32D, 0x65, 0x32D, 0x45, 0x330, 0x65,
  0x330, 0x45, 0x327, 0x306, 0x65, 0x327, 0x306, 0x46, 0x307, 0x66, 0x307, 0x47, 0x304, 0x67, 0x304,
  0x48, 0x307, 0x68, 0x307, 0x48, 0x323, 0x68, 0x323, 0x48, 0x308, 0x68, 0x308, 0x48, 0x327, 0x68,
  0x327, 0x48, 0x32E, 0x68, 0x32E, 0x49, 0x330, 0x69, 0x330, 0x49, 0x308, 0x301, 0x69, 0x308, 0x301,
  0x4B, 0x301, 0x6B, 0x301, 0x4B, 0x323, 0x6B, 0x323, 0x4B, 0x331, 0x6B, 0x331, 0x4C, 0x323, 0x6C,
  0x323, 0x4C, 0x323, 0x304, 0x6C, 0x323, 0x304, 0x4C, 0x331, 0x6C, 0x331, 0x4C, 0x32D, 0x6C, 0x32D,
  0x4D, 0x301, 0x6D, 0x301, 0x4D, 0x307, 0x6D, 0x307, 0x4D, 0x323, 0x6D, 0x323, 0x4E, 0x307, 0x6E,
  0x307, 0x4E, 0x323, 0x6E, 0x323, 0x4E, 0x331, 0x6E, 0x331, 0x4E, 0x32D, 0x6E, 0x32D, 0x4F, 0x303,
  0x301, 0x6F, 0x303, 0x301, 0x4F, 0x303, 0x308, 0x6F, 0x303, 0x308, 0x4F, 0x304, 0x300, 0x6F,
  0x304, 0x300, 0x4F, 0x304, 0x301, 0x6F, 0x304, 0x301, 0x50, 0x301, 0x70, 0x301, 0x50, 0x307, 0x70,
  0x307, 0x52, 0x307, 0x72, 0x307, 0x52, 0x323, 0x72, 0x323, 0x52, 0x323, 0x304, 0x72, 0x323, 0x304,
  0x52, 0x331, 0x72, 0x331, 0x53, 0x307, 0x73, 0x307, 0x53, 0x323, 0x73, 0x323, 0x53, 0x301, 0x307,
  0x73, 0x301, 0x307, 0x53, 0x30C, 0x307, 0x73, 0x30C, 0x307, 0x53, 0x323, 0x307, 0x73, 0x323,
  0x307, 0x54, 0x307, 0x74, 0x307, 0x54, 0x323, 0x74, 0x323, 0x54, 0x331, 0x74, 0x331, 0x54, 0x32D,
  0x74, 0x32D, 0x55, 0x324, 0x75, 0x324, 0x55, 0x330, 0x75, 0x330, 0x55, 0x32D, 0x75, 0x32D, 0x55,
  0x303, 0x301, 0x75, 0x303, 0x301, 0x55, 0x304, 0x308, 0x75, 0x304, 0x308, 0x56, 0x303, 0x76,
  0x303, 0x56, 0x323, 0x76, 0x323, 0x57, 0x300, 0x77, 0x300, 0x57, 0x301, 0x77, 0x301, 0x57, 0x308,
  0x77, 0x308, 0x57, 0x307, 0x77, 0x307, 0x57, 0x323, 0x77, 0x323, 0x58, 0x307, 0x78, 0x307, 0x58,
  0x308, 0x78, 0x308, 0x59, 0x307, 0x79, 0x307, 0x5A, 0x302, 0x7A, 0x302, 0x5A, 0x323, 0x7A, 0x323,
  0x5A, 0x331, 0x7A, 0x331, 0x68, 0x331, 0x74, 0x308, 0x77, 0x30A, 0x79, 0x30A, 0x17F, 0x307, 0x41,
  0x323, 0x61, 0x323, 0x41, 0x309, 0x61, 0x309, 0x41, 0x302, 0x301, 0x61, 0x302, 0x301, 0x41, 0x302,
  0x300, 0x61, 0x302, 0x300, 0x41, 0x302, 0x309, 0x61, 0x302, 0x309, 0x41, 0x302, 0x303, 0x61,
  0x302, 0x303, 0x41, 0x323, 0x302, 0x61, 0x323, 0x302, 0x41, 0x306, 0x301, 0x61, 0x306, 0x301,
  0x41, 0x306, 0x300, 0x61, 0x306, 0x300, 0x41, 0x306, 0x309, 0x61, 0x306, 0x309, 0x41, 0x306,
  0x303, 0x61, 0x306, 0x303, 0x41, 0x323, 0x306, 0x61, 0x323, 0x306, 0x45, 0x323, 0x65, 0x323, 0x45,
  0x309, 0x65, 0x309, 0x45, 0x303, 0x65, 0x303, 0x45, 0x302, 0x301, 0x65, 0x302, 0x301, 0x45, 0x302,
  0x300, 0x65, 0x302, 0x300, 0x45, 0x302, 0x309, 0x65, 0x302, 0x309, 0x45, 0x302, 0x303, 0x65,
  0x302, 0x303, 0x45, 0x323, 0x302, 0x65, 0x323, 0x302, 0x49, 0x309, 0x69, 0x309, 0x49, 0x323, 0x69,
  0x323, 0x4F, 0x323, 0x6F, 0x323, 0x4F, 0x309, 0x6F, 0x309, 0x4F, 0x302, 0x301, 0x6F, 0x302, 0x301,
  0x4F, 0x302, 0x300, 0x6F, 0x302, 0x300, 0x4F, 0x302, 0x309, 0x6F, 0x302, 0x309, 0x4F, 0x302,
  0x303, 0x6F, 0x302, 0x303, 0x4F, 0x323, 0x302, 0x6F, 0x323, 0x302, 0x4F, 0x31B, 0x301, 0x6F,
  0x31B, 0x301, 0x4F, 0x31B, 0x300, 0x6F, 0x31B, 0x300, 0x4F, 0x31B, 0x309, 0x6F, 0x31B, 0x309,
  0x4F, 0x31B, 0x303, 0x6F, 0x31B, 0x303, 0x4F, 0x31B, 0x323, 0x6F, 0x31B, 0x323, 0x55, 0x323, 0x75,
  0x323, 0x55, 0x309, 0x75, 0x309, 0x55, 0x31B, 0x301, 0x75, 0x31B, 0x301, 0x55, 0x31B, 0x300, 0x75,
  0x31B, 0x300, 0x55, 0x31B, 0x309, 0x75, 0x31B, 0x309, 0x55, 0x31B, 0x303, 0x75, 0x31B, 0x303,
  0x55, 0x31B, 0x323, 0x75, 0x31B, 0x323, 0x59, 0x300, 0x79, 0x300, 0x59, 0x323, 0x79, 0x323, 0x59,
  0x309, 0x79, 0x309, 0x59, 0x303, 0x79, 0x303, 0x3B1, 0x313, 0x3B1, 0x314, 0x3B1, 0x313, 0x300,
  0x3B1, 0x314, 0x300, 0x3B1, 0x313, 0x301, 0x3B1, 0x314, 0x301, 0x3B1, 0x313, 0x342, 0x3B1, 0x314,
  0x342, 0x391, 0x313, 0x391, 0x314, 0x391, 0x313, 0x300, 0x391, 0x314, 0x300, 0x391, 0x313, 0x301,
  0x391, 0x314, 0x301, 0x391, 0x313, 0x342, 0x391, 0x314, 0x342, 0x3B5, 0x313, 0x3B5, 0x314, 0x3B5,
  0x313, 0x300, 0x3B5, 0x314, 0x300, 0x3B5, 0x313, 0x301, 0x3B5, 0x314, 0x301, 0x395, 0x313, 0x395,
  0x314, 0x395, 0x313, 0x300, 0x395, 0x314, 0x300, 0x395, 0x313, 0x301, 0x395, 0x314, 0x301, 0x3B7,
  0x313, 0x3B7, 0x314, 0x3B7, 0x313, 0x300, 0x3B7, 0x314, 0x300, 0x3B7, 0x313, 0x301, 0x3B7, 0x314,
  0x301, 0x3B7, 0x313, 0x342, 0x3B7, 0x314, 0x342, 0x397, 0x313, 0x397, 0x314, 0x397, 0x313, 0x300,
  0x397, 0x314, 0x300, 0x397, 0x313, 0x301, 0x397, 0x314, 0x301, 0x397, 0x313, 0x342, 0x397, 0x314,
  0x342, 0x3B9, 0x313, 0x3B9, 0x314, 0x3B9, 0x313, 0x300, 0x3B9, 0x314, 0x300, 0x3B9, 0x313, 0x301,
  0x3B9, 0x314, 0x301, 0x3B9, 0x313, 0x342, 0x3B9, 0x314, 0x342, 0x399, 0x313, 0x399, 0x314, 0x399,
  0x313, 0x300, 0x399, 0x314, 0x300, 0x399, 0x313, 0x301, 0x399, 0x314, 0x301, 0x399, 0x313, 0x342,
  0x399, 0x314, 0x342, 0x3BF, 0x313, 0x3BF, 0x314, 0x3BF, 0x313, 0x300, 0x3BF, 0x314, 0x300, 0x3BF,
  0x313, 0x301, 0x3BF, 0x314, 0x301, 0x39F, 0x313, 0x39F, 0x314, 0x39F, 0x313, 0x300, 0x39F, 0x314,
  0x300, 0x39F, 0x313, 0x301, 0x39F, 0x314, 0x301, 0x3C5, 0x313, 0x3C5, 0x314, 0x3C5, 0x313, 0x300,
  0x3C5, 0x314, 0x300, 0x3C5, 0x313, 0x301, 0x3C5, 0x314, 0x301, 0x3C5, 0x313, 0x342, 0x3C5, 0x314,
  0x342, 0x3A5, 0x314, 0x3A5, 0x314, 0x300, 0x3A5, 0x314, 0x301, 0x3A5, 0x314, 0x342, 0x3C9, 0x313,
  0x3C9, 0x314, 0x3C9, 0x313, 0x300, 0x3C9, 0x314, 0x300, 0x3C9, 0x313, 0x301, 0x3C9, 0x314, 0x301,
  0x3C9, 0x313, 0x342, 0x3C9, 0x314, 0x342, 0x3A9, 0x313, 0x3A9, 0x314, 0x3A9, 0x313, 0x300, 0x3A9,
  0x314, 0x300, 0x3A9, 0x313, 0x301, 0x3A9, 0x314, 0x301, 0x3A9, 0x313, 0x342, 0x3A9, 0x314, 0x342,
  0x3B1, 0x300, 0x3B5, 0x300, 0x3B7, 0x300, 0x3B9, 0x300, 0x3BF, 0x300, 0x3C5, 0x300, 0x3C9, 0x300,
  0x3B1, 0x313, 0x345, 0x3B1, 0x314, 0x345, 0x3B1, 0x313, 0x300, 0x345, 0x3B1, 0x314, 0x300, 0x345,
  0x3B1, 0x313, 0x301, 0x345, 0x3B1, 0x314, 0x301, 0x345, 0x3B1, 0x313, 0x342, 0x345, 0x3B1, 0x314,
  0x342, 0x345, 0x391, 0x313, 0x345, 0x391, 0x314, 0x345, 0x391, 0x313, 0x300, 0x345, 0x391, 0x314,
  0x300, 0x345, 0x391, 0x313, 0x301, 0x345, 0x391, 0x314, 0x301, 0x345, 0x391, 0x313, 0x342, 0x345,
  0x391, 0x314, 0x342, 0x345, 0x3B7, 0x313, 0x345, 0x3B7, 0x314, 0x345, 0x3B7, 0x313, 0x300, 0x345,
  0x3B7, 0x314, 0x300, 0x345, 0x3B7, 0x313, 0x301, 0x345, 0x3B7, 0x314, 0x301, 0x345, 0x3B7, 0x313,
  0x342, 0x345, 0x3B7, 0x314, 0x342, 0x345, 0x397, 0x313, 0x345, 0x397, 0x314, 0x345, 0x397, 0x313,
  0x300, 0x345, 0x397, 0x314, 0x300, 0x345, 0x397, 0x313, 0x301, 0x345, 0x397, 0x314, 0x301, 0x345,
  0x397, 0x313, 0x342, 0x345, 0x397, 0x314, 0x342, 0x345, 0x3C9, 0x313, 0x345, 0x3C9, 0x314, 0x345,
  0x3C9, 0x313, 0x300, 0x345, 0x3C9, 0x314, 0x300, 0x345, 0x3C9, 0x313, 0x301, 0x345, 0x3C9, 0x314,
  0x301, 0x345, 0x3C9, 0x313, 0x342, 0x345, 0x3C9, 0x314, 0x342, 0x345, 0x3A9, 0x313, 0x345, 0x3A9,
  0x314, 0x345, 0x3A9, 0x313, 0x300, 0x345, 0x3A9, 0x314, 0x300, 0x345, 0x3A9, 0x313, 0x301, 0x345,
  0x3A9, 0x314, 0x301, 0x345, 0x3A9, 0x313, 0x342, 0x345, 0x3A9, 0x314, 0x342, 0x345, 0x3B1, 0x306,
  0x3B1, 0x304, 0x3B1, 0x300, 0x345, 0x3B1, 0x345, 0x3B1, 0x301, 0x345, 0x3B1, 0x342, 0x3B1, 0x342,
  0x345, 0x391, 0x306, 0x391, 0x304, 0x391, 0x300, 0x391, 0x345, 0xA8, 0x342, 0x3B7, 0x300, 0x345,
  0x3B7, 0x345, 0x3B7, 0x301, 0x345, 0x3B7, 0x342, 0x3B7, 0x342, 0x345, 0x395, 0x300, 0x397, 0x300,
  0x397, 0x345, 0x1FBF, 0x300, 0x1FBF, 0x301, 0x1FBF, 0x342, 0x3B9, 0x306, 0x3B9, 0x304, 0x3B9,
  0x308, 0x300, 0x3B9, 0x342, 0x3B9, 0x308, 0x342, 0x399, 0x306, 0x399, 0x304, 0x399, 0x300, 0x1FFE,
  0x300, 0x1FFE, 0x301, 0x1FFE, 0x342, 0x3C5, 0x306, 0x3C5, 0x304, 0x3C5, 0x308, 0x300, 0x3C1,
  0x313, 0x3C1, 0x314, 0x3C5, 0x342, 0x3C5, 0x308, 0x342, 0x3A5, 0x306, 0x3A5, 0x304, 0x3A5, 0x300,
  0x3A1, 0x314, 0xA8, 0x300, 0x60, 0x3C9, 0x300, 0x345, 0x3C9, 0x345, 0x3C9, 0x301, 0x345, 0x3C9,
  0x342, 0x3C9, 0x342, 0x345, 0x39F, 0x300, 0x3A9, 0x300, 0x3A9, 0x345, 0xB4, 0x2002, 0x2003,
  0x2190, 0x338, 0x2192, 0x338, 0x2194, 0x338, 0x21D0, 0x338, 0x21D4, 0x338, 0x21D2, 0x338, 0x2203,
  0x338, 0x2208, 0x338, 0x220B, 0x338, 0x2223, 0x338, 0x2225, 0x338, 0x223C, 0x338, 0x2243, 0x338,
  0x2245, 0x338, 0x2248, 0x338, 0x3D, 0x338, 0x2261, 0x338, 0x224D, 0x338, 0x3C, 0x338, 0x3E, 0x338,
  0x2264, 0x338, 0x2265, 0x338, 0x2272, 0x338, 0x2273, 0x338, 0x2276, 0x338, 0x2277, 0x338, 0x227A,
  0x338, 0x227B, 0x338, 0x2282, 0x338, 0x2283, 0x338, 0x2286, 0x338, 0x2287, 0x338, 0x22A2, 0x338,
  0x22A8, 0x338, 0x22A9, 0x338, 0x22AB, 0x338, 0x227C, 0x338, 0x227D, 0x338, 0x2291, 0x338, 0x2292,
  0x338, 0x22B2, 0x338, 0x22B3, 0x338, 0x22B4, 0x338, 0x22B5, 0x338, 0x3008, 0x3009, 0x2ADD, 0x338,
  0x304B, 0x3099, 0x304D, 0x3099, 0x304F, 0x3099, 0x3051, 0x3099, 0x3053, 0x3099, 0x3055, 0x3099,
  0x3057, 0x3099, 0x3059, 0x3099, 0x305B, 0x3099, 0x305D, 0x3099, 0x305F, 0x3099, 0x3061, 0x3099,
  0x3064, 0x3099, 0x3066, 0x3099, 0x3068, 0x3099, 0x306F, 0x3099, 0x306F, 0x309A, 0x3072, 0x3099,
  0x3072, 0x309A, 0x3075, 0x3099, 0x3075, 0x309A, 0x3078, 0x3099, 0x3078, 0x309A, 0x307B, 0x3099,
  0x307B, 0x309A, 0x3046, 0x3099, 0x309D, 0x3099, 0x30AB, 0x3099, 0x30AD, 0x3099, 0x30AF, 0x3099,
  0x30B1, 0x3099, 0x30B3, 0x3099, 0x30B5, 0x3099, 0x30B7, 0x3099, 0x30B9, 0x3099, 0x30BB, 0x3099,
  0x30BD, 0x3099, 0x30BF, 0x3099, 0x30C1, 0x3099, 0x30C4, 0x3099, 0x30C6, 0x3099, 0x30C8, 0x3099,
  0x30CF, 0x3099, 0x30CF, 0x309A, 0x30D2, 0x3099, 0x30D2, 0x309A, 0x30D5, 0x3099, 0x30D5, 0x309A,
  0x30D8, 0x3099, 0x30D8, 0x309A, 0x30DB, 0x3099, 0x30DB, 0x309A, 0x30A6, 0x3099, 0x30EF, 0x3099,
  0x30F0, 0x3099, 0x30F1, 0x3099, 0x30F2, 0x3099, 0x30FD, 0x3099, 0x8C48, 0x66F4, 0x8ECA, 0x8CC8,
  0x6ED1, 0x4E32, 0x53E5, 0x9F9C, 0x5951, 0x91D1, 0x5587, 0x5948, 0x61F6, 0x7669, 0x7F85, 0x863F,
  0x87BA, 0x88F8, 0x908F, 0x6A02, 0x6D1B, 0x70D9, 0x73DE, 0x843D, 0x916A, 0x99F1, 0x4E82, 0x5375,
  0x6B04, 0x721B, 0x862D, 0x9E1E, 0x5D50, 0x6FEB, 0x85CD, 0x8964, 0x62C9, 0x81D8, 0x881F, 0x5ECA,
  0x6717, 0x6D6A, 0x72FC, 0x90CE, 0x4F86, 0x51B7, 0x52DE, 0x64C4, 0x6AD3, 0x7210, 0x76E7, 0x8001,
  0x8606, 0x865C, 0x8DEF, 0x9732, 0x9B6F, 0x9DFA, 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x9E7F,
  0x8AD6, 0x58DF, 0x5F04, 0x7C60, 0x807E, 0x7262, 0x78CA, 0x8CC2, 0x96F7, 0x58D8, 0x5C62, 0x6A13,
  0x6DDA, 0x6F0F, 0x7D2F, 0x7E37, 0x964B, 0x52D2, 0x808B, 0x51DC, 0x51CC, 0x7A1C, 0x7DBE, 0x83F1,
  0x9675, 0x8B80, 0x62CF, 0x8AFE, 0x4E39, 0x5BE7, 0x6012, 0x7387, 0x7570, 0x5317, 0x78FB, 0x4FBF,
  0x5FA9, 0x4E0D, 0x6CCC, 0x6578, 0x7D22, 0x53C3, 0x585E, 0x7701, 0x8449, 0x8AAA, 0x6BBA, 0x8FB0,
  0x6C88, 0x62FE, 0x82E5, 0x63A0, 0x7565, 0x4EAE, 0x5169, 0x51C9, 0x6881, 0x7CE7, 0x826F, 0x8AD2,
  0x91CF, 0x52F5, 0x5442, 0x5973, 0x5EEC, 0x65C5, 0x6FFE, 0x792A, 0x95AD, 0x9A6A, 0x9E97, 0x9ECE,
  0x529B, 0x66C6, 0x6B77, 0x8F62, 0x5E74, 0x6190, 0x6200, 0x649A, 0x6F23, 0x7149, 0x7489, 0x79CA,
  0x7DF4, 0x806F, 0x8F26, 0x84EE, 0x9023, 0x934A, 0x5217, 0x52A3, 0x54BD, 0x70C8, 0x88C2, 0x5EC9,
  0x5FF5, 0x637B, 0x6BAE, 0x7C3E, 0x7375, 0x4EE4, 0x56F9, 0x5DBA, 0x601C, 0x73B2, 0x7469, 0x7F9A,
  0x8046, 0x9234, 0x96F6, 0x9748, 0x9818, 0x4F8B, 0x79AE, 0x91B4, 0x96B8, 0x60E1, 0x4E86, 0x50DA,
  0x5BEE, 0x5C3F, 0x6599, 0x71CE, 0x7642, 0x84FC, 0x907C, 0x9F8D, 0x6688, 0x962E, 0x5289, 0x677B,
  0x67F3, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7D10, 0x985E, 0x516D, 0x622E, 0x9678, 0x502B,
  0x5D19, 0x6DEA, 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0x9686, 0x5229, 0x540F, 0x5C65, 0x6613, 0x674E,
  0x68A8, 0x6CE5, 0x7406, 0x75E2, 0x7F79, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x533F, 0x6EBA, 0x541D,
  0x71D0, 0x7498, 0x85FA, 0x96A3, 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x81E8, 0x7ACB, 0x7B20, 0x7C92,
  0x72C0, 0x7099, 0x8B58, 0x4EC0, 0x8336, 0x523A, 0x5207, 0x5EA6, 0x62D3, 0x7CD6, 0x5B85, 0x6D1E,
  0x66B4, 0x8F3B, 0x884C, 0x964D, 0x898B, 0x5ED3, 0x5140, 0x55C0, 0x585A, 0x6674, 0x51DE, 0x732A,
  0x76CA, 0x793C, 0x795E, 0x7965, 0x798F, 0x9756, 0x7CBE, 0x7FBD, 0x8612, 0x8AF8, 0x9038, 0x90FD,
  0x98EF, 0x98FC, 0x9928, 0x9DB4, 0x90DE, 0x96B7, 0x4FAE, 0x50E7, 0x514D, 0x52C9, 0x52E4, 0x5351,
  0x559D, 0x5606, 0x5668, 0x5840, 0x58A8, 0x5C64, 0x5C6E, 0x6094, 0x6168, 0x618E, 0x61F2, 0x654F,
  0x65E2, 0x6691, 0x6885, 0x6D77, 0x6E1A, 0x6F22, 0x716E, 0x722B, 0x7422, 0x7891, 0x793E, 0x7949,
  0x7948, 0x7950, 0x7956, 0x795D, 0x798D, 0x798E, 0x7A40, 0x7A81, 0x7BC0, 0x7E09, 0x7E41, 0x7F72,
  0x8005, 0x81ED, 0x8279, 0x8457, 0x8910, 0x8996, 0x8B01, 0x8B39, 0x8CD3, 0x8D08, 0x8FB6, 0x96E3,
  0x97FF, 0x983B, 0x6075, 0x242EE, 0x8218, 0x4E26, 0x51B5, 0x5168, 0x4F80, 0x5145, 0x5180, 0x52C7,
  0x52FA, 0x5555, 0x5599, 0x55E2, 0x58B3, 0x5944, 0x5954, 0x5A62, 0x5B28, 0x5ED2, 0x5ED9, 0x5F69,
  0x5FAD, 0x60D8, 0x614E, 0x6108, 0x6160, 0x6234, 0x63C4, 0x641C, 0x6452, 0x6556, 0x671B, 0x6756,
  0x6B79, 0x6EDB, 0x6ECB, 0x701E, 0x77A7, 0x7235, 0x72AF, 0x7471, 0x7506, 0x753B, 0x761D, 0x761F,
  0x76DB, 0x76F4, 0x774A, 0x7740, 0x78CC, 0x7AB1, 0x7C7B, 0x7D5B, 0x7F3E, 0x8352, 0x83EF, 0x8779,
  0x8941, 0x8986, 0x8ABF, 0x8ACB, 0x8AED, 0x8B8A, 0x8F38, 0x9072, 0x9199, 0x9276, 0x967C, 0x97DB,
  0x980B, 0x9B12, 0x2284A, 0x22844, 0x233D5, 0x3B9D, 0x4018, 0x4039, 0x25249, 0x25CD0, 0x27ED3,
  0x9F43, 0x9F8E, 0x5D9, 0x5B4, 0x5F2, 0x5B7, 0x5E9, 0x5C1, 0x5E9, 0x5C2, 0x5E9, 0x5BC, 0x5C1,
  0x5E9, 0x5BC, 0x5C2, 0x5D0, 0x5B7, 0x5D0, 0x5B8, 0x5D0, 0x5BC, 0x5D1, 0x5BC, 0x5D2, 0x5BC, 0x5D3,
  0x5BC, 0x5D4, 0x5BC, 0x5D5, 0x5BC, 0x5D6, 0x5BC, 0x5D8, 0x5BC, 0x5D9, 0x5BC, 0x5DA, 0x5BC, 0x5DB,
  0x5BC, 0x5DC, 0x5BC, 0x5DE, 0x5BC, 0x5E0, 0x5BC, 0x5E1, 0x5BC, 0x5E3, 0x5BC, 0x5E4, 0x5BC, 0x5E6,
  0x5BC, 0x5E7, 0x5BC, 0x5E8, 0x5BC, 0x5EA, 0x5BC, 0x5D5, 0x5B9, 0x5D1, 0x5BF, 0x5DB, 0x5BF, 0x5E4,
  0x5BF, 0x11099, 0x110BA, 0x1109B, 0x110BA, 0x110A5, 0x110BA, 0x11131, 0x11127, 0x11132, 0x11127,
  0x11347, 0x1133E, 0x11347, 0x11357, 0x114B9, 0x114BA, 0x114B9, 0x114B0, 0x114B9, 0x114BD, 0x115B8,
  0x115AF, 0x115B9, 0x115AF, 0x11935, 0x11930, 0x1D157, 0x1D165, 0x1D158, 0x1D165, 0x1D158, 0x1D165,
  0x1D16E, 0x1D158, 0x1D165, 0x1D16F, 0x1D158, 0x1D165, 0x1D170, 0x1D158, 0x1D165, 0x1D171, 0x1D158,
  0x1D165, 0x1D172, 0x1D1B9, 0x1D165, 0x1D1BA, 0x1D165, 0x1D1B9, 0x1D165, 0x1D16E, 0x1D1BA, 0x1D165,
  0x1D16E, 0x1D1B9, 0x1D165, 0x1D16F, 0x1D1BA, 0x1D165, 0x1D16F, 0x4E3D, 0x4E38, 0x4E41, 0x20122,
  0x4F60, 0x4FBB, 0x5002, 0x507A, 0x5099, 0x50CF, 0x349E, 0x2063A, 0x5154, 0x5164, 0x5177, 0x2051C,
  0x34B9, 0x5167, 0x518D, 0x2054B, 0x5197, 0x51A4, 0x4ECC, 0x51AC, 0x291DF, 0x51F5, 0x5203, 0x34DF,
  0x523B, 0x5246, 0x5272, 0x5277, 0x3515, 0x5305, 0x5306, 0x5349, 0x535A, 0x5373, 0x537D, 0x537F,
  0x20A2C, 0x7070, 0x53CA, 0x53DF, 0x20B63, 0x53EB, 0x53F1, 0x5406, 0x549E, 0x5438, 0x5448, 0x5468,
  0x54A2, 0x54F6, 0x5510, 0x5553, 0x5563, 0x5584, 0x55AB, 0x55B3, 0x55C2, 0x5716, 0x5717, 0x5651,
  0x5674, 0x58EE, 0x57CE, 0x57F4, 0x580D, 0x578B, 0x5832, 0x5831, 0x58AC, 0x214E4, 0x58F2, 0x58F7,
  0x5906, 0x591A, 0x5922, 0x5962, 0x216A8, 0x216EA, 0x59EC, 0x5A1B, 0x5A27, 0x59D8, 0x5A66, 0x36EE,
  0x36FC, 0x5B08, 0x5B3E, 0x219C8, 0x5BC3, 0x5BD8, 0x5BF3, 0x21B18, 0x5BFF, 0x5C06, 0x5F53, 0x5C22,
  0x3781, 0x5C60, 0x5CC0, 0x5C8D, 0x21DE4, 0x5D43, 0x21DE6, 0x5D6E, 0x5D6B, 0x5D7C, 0x5DE1, 0x5DE2,
  0x382F, 0x5DFD, 0x5E28, 0x5E3D, 0x5E69, 0x3862, 0x22183, 0x387C, 0x5EB0, 0x5EB3, 0x5EB6, 0x2A392,
  0x5EFE, 0x22331, 0x8201, 0x5F22, 0x38C7, 0x232B8, 0x261DA, 0x5F62, 0x5F6B, 0x38E3, 0x5F9A, 0x5FCD,
  0x5FD7, 0x5FF9, 0x6081, 0x393A, 0x391C, 0x226D4, 0x60C7, 0x6148, 0x614C, 0x617A, 0x61B2, 0x61A4,
  0x61AF, 0x61DE, 0x6210, 0x621B, 0x625D, 0x62B1, 0x62D4, 0x6350, 0x22B0C, 0x633D, 0x62FC, 0x6368,
  0x6383, 0x63E4, 0x22BF1, 0x6422, 0x63C5, 0x63A9, 0x3A2E, 0x6469, 0x647E, 0x649D, 0x6477, 0x3A6C,
  0x656C, 0x2300A, 0x65E3, 0x66F8, 0x6649, 0x3B19, 0x3B08, 0x3AE4, 0x5192, 0x5195, 0x6700, 0x669C,
  0x80AD, 0x43D9, 0x6721, 0x675E, 0x6753, 0x233C3, 0x3B49, 0x67FA, 0x6785, 0x6852, 0x2346D, 0x688E,
  0x681F, 0x6914, 0x6942, 0x69A3, 0x69EA, 0x6AA8, 0x236A3, 0x6ADB, 0x3C18, 0x6B21, 0x238A7, 0x6B54,
  0x3C4E, 0x6B72, 0x6B9F, 0x6BBB, 0x23A8D, 0x21D0B, 0x23AFA, 0x6C4E, 0x23CBC, 0x6CBF, 0x6CCD,
  0x6C67, 0x6D16, 0x6D3E, 0x6D69, 0x6D78, 0x6D85, 0x23D1E, 0x6D34, 0x6E2F, 0x6E6E, 0x3D33, 0x6EC7,
  0x23ED1, 0x6DF9, 0x6F6E, 0x23F5E, 0x23F8E, 0x6FC6, 0x7039, 0x701B, 0x3D96, 0x704A, 0x707D, 0x7077,
  0x70AD, 0x20525, 0x7145, 0x24263, 0x719C, 0x243AB, 0x7228, 0x7250, 0x24608, 0x7280, 0x7295,
  0x24735, 0x24814, 0x737A, 0x738B, 0x3EAC, 0x73A5, 0x3EB8, 0x7447, 0x745C, 0x7485, 0x74CA, 0x3F1B,
  0x7524, 0x24C36, 0x753E, 0x24C92, 0x2219F, 0x7610, 0x24FA1, 0x24FB8, 0x25044, 0x3FFC, 0x4008,
  0x250F3, 0x250F2, 0x25119, 0x25133, 0x771E, 0x771F, 0x778B, 0x4046, 0x4096, 0x2541D, 0x784E,
  0x40E3, 0x25626, 0x2569A, 0x256C5, 0x79EB, 0x412F, 0x7A4A, 0x7A4F, 0x2597C, 0x25AA7, 0x7AEE,
  0x4202, 0x25BAB, 0x7BC6, 0x7BC9, 0x4227, 0x25C80, 0x7CD2, 0x42A0, 0x7CE8, 0x7CE3, 0x7D00, 0x25F86,
  0x7D63, 0x4301, 0x7DC7, 0x7E02, 0x7E45, 0x4334, 0x26228, 0x26247, 0x4359, 0x262D9, 0x7F7A,
  0x2633E, 0x7F95, 0x7FFA, 0x264DA, 0x26523, 0x8060, 0x265A8, 0x8070, 0x2335F, 0x43D5, 0x80B2,
  0x8103, 0x440B, 0x813E, 0x5AB5, 0x267A7, 0x267B5, 0x23393, 0x2339C, 0x8204, 0x8F9E, 0x446B,
  0x8291, 0x828B, 0x829D, 0x52B3, 0x82B1, 0x82B3, 0x82BD, 0x82E6, 0x26B3C, 0x831D, 0x8363, 0x83AD,
  0x8323, 0x83BD, 0x83E7, 0x8353, 0x83CA, 0x83CC, 0x83DC, 0x26C36, 0x26D6B, 0x26CD5, 0x452B, 0x84F1,
  0x84F3, 0x8516, 0x273CA, 0x8564, 0x26F2C, 0x455D, 0x4561, 0x26FB1, 0x270D2, 0x456B, 0x8650,
  0x8667, 0x8669, 0x86A9, 0x8688, 0x870E, 0x86E2, 0x8728, 0x876B, 0x8786, 0x45D7, 0x87E1, 0x8801,
  0x45F9, 0x8860, 0x8863, 0x27667, 0x88D7, 0x88DE, 0x4635, 0x88FA, 0x34BB, 0x278AE, 0x27966, 0x46BE,
  0x46C7, 0x8AA0, 0x8C55, 0x27CA8, 0x8CAB, 0x8CC1, 0x8D1B, 0x8D77, 0x27F2F, 0x20804, 0x8DCB, 0x8DBC,
  0x8DF0, 0x208DE, 0x8ED4, 0x285D2, 0x285ED, 0x9094, 0x90F1, 0x9111, 0x2872E, 0x911B, 0x9238,
  0x92D7, 0x92D8, 0x927C, 0x93F9, 0x9415, 0x28BFA, 0x958B, 0x4995, 0x95B7, 0x28D77, 0x49E6, 0x96C3,
  0x5DB2, 0x9723, 0x29145, 0x2921A, 0x4A6E, 0x4A76, 0x97E0, 0x2940A, 0x4AB2, 0x29496, 0x9829,
  0x295B6, 0x98E2, 0x4B33, 0x9929, 0x99A7, 0x99C2, 0x99FE, 0x4BCE, 0x29B30, 0x9C40, 0x9CFD, 0x4CCE,
  0x4CED, 0x9D67, 0x2A0CE, 0x4CF8, 0x2A105, 0x2A20E, 0x2A291, 0x9EBB, 0x4D56, 0x9EF9, 0x9EFE,
  0x9F05, 0x9F0F, 0x9F16, 0x9F3B, 0x2A600
};
// END-GENERATED

} // namespace normalize
} // namespace idna
} // namespace upa
// Copyright 2017-2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// #include "upa/idna/punycode.h"

// #include <algorithm>
// #include <cstdint>
#include <type_traits>

namespace upa { // NOLINT(modernize-concat-nested-namespaces)
namespace idna { // NOLINT(modernize-concat-nested-namespaces)
namespace punycode {

namespace {

// punycode_uint needs to be unsigned and needs to be
// at least 26 bits wide.

using punycode_uint = std::uint32_t;

// Bootstring parameters for Punycode

constexpr punycode_uint base = 36;
constexpr punycode_uint tmin = 1;
constexpr punycode_uint tmax = 26;
constexpr punycode_uint skew = 38;
constexpr punycode_uint damp = 700;
constexpr punycode_uint initial_bias = 72;
constexpr punycode_uint initial_n = 0x80;
constexpr char delimiter = 0x2D;

// basic(cp) tests whether cp is a basic code point:
template <class T>
constexpr bool basic(T cp) {
    return static_cast<typename std::make_unsigned<T>::type>(cp) < 0x80;
}

// decode_digit(cp) returns the numeric value of a basic code
// point (for use in representing integers) in the range 0 to
// base-1, or base if cp does not represent a value.

constexpr punycode_uint decode_digit(punycode_uint cp) {
    return cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 :
        cp - 97 < 26 ? cp - 97 : base;
}

// encode_digit(d) returns the basic code point whose value
// (when used for representing integers) is d, which needs to be in
// the range 0 to base-1. The lowercase form is used.

constexpr char encode_digit(punycode_uint d) {
    return static_cast<char>(d + 22 + 75 * (d < 26));
    /*  0..25 map to ASCII a..z */
    /* 26..35 map to ASCII 0..9 */
}

// Platform-specific constants

// maxint is the maximum value of a punycode_uint variable:
constexpr punycode_uint maxint = -1;
constexpr std::size_t kMaxCodePoints = maxint;

// Bias adaptation function

inline punycode_uint adapt(punycode_uint delta, punycode_uint numpoints, bool firsttime)
{
    delta = firsttime ? delta / damp : delta >> 1; // delta >> 1 is a faster way of doing delta / 2
    delta += delta / numpoints;

    punycode_uint k = 0;
    while (delta > ((base - tmin) * tmax) / 2) {
        delta /= base - tmin;
        k += base;
    }

    return k + (base - tmin + 1) * delta / (delta + skew);
}

// for decoder

template <typename CharT>
inline const CharT* find_delim(const CharT* first, const CharT* last) {
    for (auto it = last; it != first;) {
        if (*--it == delimiter) return it;
    }
    return nullptr;
}

} // namespace


// Main encode function

status encode(std::string& output, const char32_t* first, const char32_t* last) {

    // The Punycode spec assumes that the input length is the same type
    // of integer as a code point, so we need to convert the size_t to
    // a punycode_uint, which could overflow.

    if (last - first > kMaxCodePoints)
        return status::overflow;

    const auto input_length = static_cast<punycode_uint>(last - first);

    // Handle the basic code points:

    const std::size_t len0 = output.length();
    output.reserve(len0 + input_length);
    for (auto it = first; it != last; ++it) {
        const auto ch = *it;
        if (basic(ch)) {
            output.push_back(static_cast<char>(ch));
        } else if (ch > 0x10FFFF) {
            // invalid codepoint
            return status::bad_input;
        }
    }

    // b is the number of basic code points
    const auto b = static_cast<punycode_uint>(output.length() - len0);
    if (b > 0) output.push_back(delimiter);

    // Initialize the state:

    punycode_uint n = initial_n;
    punycode_uint delta = 0;
    punycode_uint bias = initial_bias;

    // Main encoding loop:

    // h is the number of code points that have been handled
    for (punycode_uint h = b; h < input_length;) {
        // All non-basic code points < n have been
        // handled already. Find the next larger one:
        punycode_uint m = maxint;
        for (auto it = first; it != last; ++it) {
            const auto ch = *it;
            if (ch >= n && ch < m) m = ch;
        }

        // Increase delta enough to advance the decoder's
        // <n,i> state to <m,0>, but guard against overflow:
        if (m - n > (maxint - delta) / (h + 1))
            return status::overflow;
        delta += (m - n) * (h + 1);
        n = m;

        for (auto it = first; it != last; ++it) {
            const auto ch = *it;
            if (ch < n) {
                if (++delta == 0)
                    return status::overflow;
            }
            if (ch == n) {
                // Represent delta as a generalized variable-length integer:
                punycode_uint q = delta;
                for (punycode_uint k = base; ; k += base) {
                    const punycode_uint t = k <= bias ? tmin :
                        k >= bias + tmax ? tmax : k - bias;
                    if (q < t) break;
                    output.push_back(encode_digit(t + (q - t) % (base - t)));
                    q = (q - t) / (base - t);
                }

                output.push_back(encode_digit(q));
                bias = adapt(delta, h + 1, h == b);
                delta = 0;
                ++h;
            }
        }

        ++delta, ++n;
    }
    return status::success;
}

// Main decode function

status decode(std::u32string& output, const char32_t* first, const char32_t* last) {

    // Handle the basic code points:  Let b be the number of input code
    // points before the last delimiter, or 0 if there is none, then
    // copy the first b code points to the output.

    auto bp = find_delim(first, last);
    if (bp) {
        // has delimiter, but hasn't basic code points
        if (bp == first) return status::bad_input;
        if (bp - first > kMaxCodePoints)
            return status::big_output;
    }
    const std::size_t len0 = output.length();
    output.reserve(len0 + (last - first));
    if (bp) {
        // append basic code points to output
        for (auto it = first; it != bp; ++it) {
            const auto ch = *it;
            if (!basic(ch)) return status::bad_input;
            output.push_back(ch);
        }
        // skip delimiter
        first = bp + 1;
    }

    // Initialize the state:

    punycode_uint n = initial_n;
    auto out = static_cast<punycode_uint>(output.length() - len0); // basic code points count
    punycode_uint i = 0;
    punycode_uint bias = initial_bias;

    // Main decoding loop:

    for (auto inp = first; inp != last; ++out) {
        // in is the index of the next ASCII code point to be consumed,
        // and out is the number of code points in the output array.

        // Decode a generalized variable-length integer into delta,
        // which gets added to i.  The overflow checking is easier
        // if we increase i as we go, then subtract off its starting
        // value at the end to obtain delta.

        const punycode_uint oldi = i;
        punycode_uint w = 1;
        for (punycode_uint k = base; ; k += base) {
            if (inp == last) return status::bad_input;
            const punycode_uint digit = decode_digit(*inp++);
            if (digit >= base) return status::bad_input;
            if (digit > (maxint - i) / w) return status::overflow;
            i += digit * w;
            const punycode_uint t = k <= bias ? tmin :
                k >= bias + tmax ? tmax : k - bias;
            if (digit < t) break;
            if (w > maxint / (base - t)) return status::overflow;
            w *= (base - t);
        }

        bias = adapt(i - oldi, out + 1, oldi == 0);

        // i was supposed to wrap around from out+1 to 0,
        // incrementing n each time, so we'll fix that now:

        if (i / (out + 1) > maxint - n) return status::overflow;
        n += i / (out + 1);
        i %= (out + 1);

        // Insert n at position i of the output:
        
        if (out >= kMaxCodePoints)
            return status::big_output;

        output.insert(len0 + i, 1, n);
        //output.insert(output.begin() + len0 + i, n);
        ++i;
    }
    return status::success;
}


} // namespace punycode
} // namespace idna
} // namespace upa
// Copyright 2016-2023 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//

// #include "upa/url.h"


namespace upa {
namespace detail {

// url_error exception what() values

const char kURLParseError[] = "URL parse error";
const char kBaseURLParseError[] = "Base URL parse error";

// Part start

const uint8_t kPartStart[url::PART_COUNT] = {
    0, 0, 0,
    1,   // ':' PASSWORD
    0, 0,
    1,   // ':' PORT
    0, 0,
    1,   // '?' QUERY
    1    // '#' FRAGMENT
};

} // namespace detail


  // URL's part flag masks

const unsigned url::kPartFlagMask[url::PART_COUNT] = {
    SCHEME_FLAG,
    0,  // SCHEME_SEP
    USERNAME_FLAG,
    PASSWORD_FLAG,
    0,  // HOST_START
    HOST_FLAG | HOST_TYPE_MASK,
    PORT_FLAG,
    0,  // PATH_PREFIX
    PATH_FLAG | OPAQUE_PATH_FLAG,
    QUERY_FLAG,
    FRAGMENT_FLAG
};

// MUST be sorted by length
const url::scheme_info url::kSchemes[] = {
    // scheme,         port, is_special, is_file, is_http, is_ws
    { { "ws", 2 },       80,          1,       0,       0,     1 },
    { { "wss", 3 },     443,          1,       0,       0,     1 },
    { { "ftp", 3 },      21,          1,       0,       0,     0 },
    { { "http", 4 },     80,          1,       0,       1,     0 },
    { { "file", 4 },     -1,          1,       1,       0,     0 },
    { { "https", 5 },   443,          1,       0,       1,     0 },
};

static const std::size_t max_scheme_length = 5; // "https"

// scheme length to url::kSchemes index
static const uint8_t kLengthToSchemesInd[] = {
    0,  // 0
    0,  // 1
    0,  // 2
    1,  // 3
    3,  // 4
    5,  // 5
    6,  // the end
};

const url::scheme_info* url::get_scheme_info(const string_view src) {
    const std::size_t len = src.length();
    if (len <= max_scheme_length) {
        const int end = kLengthToSchemesInd[len + 1];
        for (int ind = kLengthToSchemesInd[len]; ind < end; ++ind) {
            // The src and kSchemes[ind].scheme lengths are the same, so compare data only
            if (string_view::traits_type::compare(src.data(), kSchemes[ind].scheme.data(), len) == 0)
                return &kSchemes[ind];
        }
    }
    return nullptr;
}


} // namespace upa
// Copyright 2016-2024 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//

// #include "upa/url_ip.h"

// #include "upa/util.h"


namespace upa {

// IPv4 serializer
// https://url.spec.whatwg.org/#concept-ipv4-serializer

void ipv4_serialize(uint32_t ipv4, std::string& output) {
    for (unsigned shift = 24; shift != 0; shift -= 8) {
        util::unsigned_to_str<uint32_t>((ipv4 >> shift) & 0xFF, output, 10);
        output.push_back('.');
    }
    util::unsigned_to_str<uint32_t>(ipv4 & 0xFF, output, 10);
}

// IPv6 serializer
// https://url.spec.whatwg.org/#concept-ipv6-serializer

namespace {

inline std::size_t longest_zero_sequence(
    const uint16_t* first, const uint16_t* last,
    const uint16_t*& compress)
{
    // The sequence to compress should be longer than 1 zero
    std::size_t last_count = 1;
    for (auto it = first; it != last; ++it) {
        if (*it == 0) {
            auto ite = it + 1;
            while (ite != last && *ite == 0) ++ite;
            const std::size_t count = ite - it;
            if (last_count < count) {
                last_count = count;
                compress = it;
            }
            if (ite == last) break;
            it = ite; // ++it in the loop skips non-zero number
        }
    }
    return last_count;
}

} // namespace

void ipv6_serialize(const uint16_t(&address)[8], std::string& output) {
    const uint16_t *first = std::begin(address);
    const uint16_t *last = std::end(address);

    const uint16_t *compress = nullptr;
    const auto compress_length = longest_zero_sequence(first, last, compress);

    // "it" pointer corresponds to pieceIndex in the URL standard
    for (auto it = first; true;) {
        if (it == compress) {
            output.append("::", it == first ? 2 : 1);
            it += compress_length;
            if (it == last) break;
        }
        util::unsigned_to_str<uint32_t>(*it, output, 16);
        if (++it == last) break;
        output.push_back(':');
    }
}


} // namespace upa
// Copyright 2016-2023 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//
// This file contains portions of modified code from:
// https://cs.chromium.org/chromium/src/url/url_canon_internal.cc
// Copyright 2013 The Chromium Authors. All rights reserved.
//

// #include "upa/url_percent_encode.h"


namespace upa { // NOLINT(modernize-concat-nested-namespaces)

#ifndef UPA_CPP_17

// These data were generated by tools/dumpCharBitSets.cpp program.
const code_point_set fragment_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f
};
const code_point_set query_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
};
const code_point_set special_query_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
};
const code_point_set path_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xff, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x57
};
const code_point_set raw_path_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x57
};
const code_point_set posix_path_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0x2b, 0xff, 0xff, 0xff, 0xef, 0xfe, 0xff, 0xff, 0x47
};
const code_point_set userinfo_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 0xff, 0x03, 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x47
};
const code_point_set component_no_encode_set = {
    0x00, 0x00, 0x00, 0x00, 0x82, 0x67, 0xff, 0x03, 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x47
};

namespace detail {
const code_points_multiset code_points = {
    0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x06, 0x02, 0x02, 0x06, 0x02, 0x02,
    0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
    0x06, 0x01, 0x01, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x21, 0x01, 0x21, 0x31, 0x06,
    0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x06, 0x01, 0x06, 0x01, 0x06, 0x06,
    0x06, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
    0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31, 0x21, 0x21, 0x06, 0x06, 0x06, 0x06, 0x01,
    0x01, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
    0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31, 0x21, 0x21, 0x01, 0x06, 0x01, 0x01, 0x02
};
} // namespace detail

#endif

namespace detail {

// Maps hex numerical values to ASCII digits
const char kHexCharLookup[0x10] = {
    '0', '1', '2', '3', '4', '5', '6', '7',
    '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
};

// Used to convert ASCII hex digit to numerical value
const char kCharToHexLookup[8] = {
    0,         // 0x00 - 0x1f
    '0',       // 0x20 - 0x3f: digits 0 - 9 are 0x30 - 0x39
    'A' - 10,  // 0x40 - 0x5f: letters A - F are 0x41 - 0x46
    'a' - 10,  // 0x60 - 0x7f: letters a - f are 0x61 - 0x66
    0,         // 0x80 - 0x9F
    0,         // 0xA0 - 0xBF
    0,         // 0xC0 - 0xDF
    0,         // 0xE0 - 0xFF
};


} // namespace detail
} // namespace upa
// Copyright 2016-2023 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//

// #include "upa/url_search_params.h"



namespace upa {

// The percent encoding/mapping table of URL search parameter bytes. If
// corresponding entry is '%', then byte must be percent encoded, otherwise -
// replaced with table value (for example, replace ' ' with '+').
// The table is based on:
// https://url.spec.whatwg.org/#concept-urlencoded-serializer

const char url_search_params::kEncByte[0x100] = {
//   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // 0
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // 1
    '+', '%', '%', '%', '%', '%', '%', '%', '%', '%', '*', '%', '%', '-', '.', '%', // 2
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '%', '%', '%', '%', '%', '%', // 3
    '%', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', // 4
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%', '%', '%', '%', '_', // 5
    '%', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', // 6
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '%', '%', '%', '%', '%', // 7
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // 8
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // 9
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // A
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // B
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // C
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // D
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', // E
    '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%', '%'  // F
};

} // namespace upa
// Copyright 2016-2023 Rimas Misevičius
// Distributed under the BSD-style license that can be
// found in the LICENSE file.
//

// #include "upa/url_utf.h"

#include <cassert>

namespace upa {

template <typename CharT>
inline std::string to_utf8_stringT(const CharT* first, const CharT* last) {
    std::string output;
    for (auto it = first; it < last;) {
        url_utf::read_char_append_utf8(it, last, output);
    }
    return output;
}

std::string url_utf::to_utf8_string(const char16_t* first, const char16_t* last) {
    return to_utf8_stringT(first, last);
}
std::string url_utf::to_utf8_string(const char32_t* first, const char32_t* last) {
    return to_utf8_stringT(first, last);
}

void url_utf::check_fix_utf8(std::string& str) {
    const char* first = str.data();
    const char* last = str.data() + str.length();

    uint32_t code_point; // NOLINT(cppcoreguidelines-init-variables)
    const char* ptr = first;
    const char* it = first;
    while (it != last && read_code_point(it, last, code_point))
        ptr = it;

    if (ptr != last) {
        // replace invalid UTF-8 byte sequences with replacement char
        std::string buff;
        buff.append(first, ptr);
        buff.append(static_cast<const char*>(kReplacementCharUtf8));

        const char* bgn = it;
        ptr = it;
        while (it != last) {
            if (read_code_point(it, last, code_point)) {
                ptr = it;
            } else {
                buff.append(bgn, ptr);
                buff.append(static_cast<const char*>(kReplacementCharUtf8));
                bgn = it;
                ptr = it;
            }
        }
        buff.append(bgn, ptr);
        str = std::move(buff);
    }
}

int url_utf::compare_by_code_units(const char* first1, const char* last1, const char* first2, const char* last2) noexcept {
    const auto* it1 = first1;
    const auto* it2 = first2;
    while (it1 != last1 && it2 != last2) {
        if (static_cast<unsigned char>(*it1) < 0x80 || static_cast<unsigned char>(*it2) < 0x80) {
            if (*it1 == *it2) {
                ++it1, ++it2;
                continue;
            }
            return
                static_cast<int>(static_cast<unsigned char>(*it1)) -
                static_cast<int>(static_cast<unsigned char>(*it2));
        }

        // read code points
        const uint32_t cp1 = read_utf_char(it1, last1).value;
        const uint32_t cp2 = read_utf_char(it2, last2).value;
        if (cp1 == cp2) continue;

        // code points not equal - compare code units
        uint32_t cu1 = cp1 <= 0xffff ? cp1 : ((cp1 >> 10) + 0xd7c0);
        uint32_t cu2 = cp2 <= 0xffff ? cp2 : ((cp2 >> 10) + 0xd7c0);
        // cu1 can be equal to cu2 if they both are lead surrogates
        if (cu1 == cu2) {
            assert(detail::u16_is_lead(cu1));
            // get trail surrogates
            cu1 = (cp1 & 0x3ff);// | 0xdc00;
            cu2 = (cp2 & 0x3ff);// | 0xdc00;
        }
        return static_cast<int>(cu1) - static_cast<int>(cu2);
    }
    if (it1 != last1) return 1;
    if (it2 != last2) return -1;
    return 0;
}

// Replacement character
const char url_utf::kReplacementCharUtf8[] = "\xEF\xBF\xBD";

//
// (c) 2016 and later: Unicode, Inc. and others.
// License & terms of use: https://www.unicode.org/copyright.html
//

// Following two arrays have values from corresponding macros in ICU 74.1 library's
// include\unicode\utf8.h file.

// Internal bit vector for 3-byte UTF-8 validity check, for use in U8_IS_VALID_LEAD3_AND_T1.
// Each bit indicates whether one lead byte + first trail byte pair starts a valid sequence.
// Lead byte E0..EF bits 3..0 are used as byte index,
// first trail byte bits 7..5 are used as bit index into that byte.
const uint8_t url_utf::k_U8_LEAD3_T1_BITS[16] = { 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x10, 0x30, 0x30 };

// Internal bit vector for 4-byte UTF-8 validity check, for use in U8_IS_VALID_LEAD4_AND_T1.
// Each bit indicates whether one lead byte + first trail byte pair starts a valid sequence.
// First trail byte bits 7..4 are used as byte index,
// lead byte F0..F4 bits 2..0 are used as bit index into that byte.
const uint8_t url_utf::k_U8_LEAD4_T1_BITS[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00 };

} // namespace upa
